Linux
 Computer >> コンピューター >  >> システム >> Linux

LinuxでSCPを使ってファイルを安全に転送する方法を徹底解説

LinuxでSCPを使ってファイルを安全に転送する方法を徹底解説

Linuxサーバーへアクセスする方法はいくつかあります。GUI(ユーザーインターフェース)付きのサーバーであればVNCを利用できますが、より一般的なのは、SSH(Secure Shell)を使ってヘッドレスサーバーにログインする方法です。SSHは暗号化された安全なプロトコルで、SSHクライアント経由でリモートシステムにアクセスできます。しかし、単にファイルをサーバーへ送りたいだけという場面もあるでしょう。そんなときに便利なのが「SCP(Secure Copy)」です。SCPは堅牢なSSHプロトコル上で動作し、ネットワーク越しに素早くファイルをリモートシステムへ転送できます。この記事では、LinuxでSCPを使ってファイルを安全に転送する方法をわかりやすく解説します。

SSHの設定

まず、サーバー側(アクセスしたいリモートシステム)にSSHサーバーをインストールする必要があります。Linuxで最も広く使われているのはOpenSSHサーバーです。お使いのディストリビューションに合わせて、以下のいずれかのコマンドを実行してください。

# Debian/Ubuntu系サーバー
sudo apt install openssh-server
 
# Fedora/CentOS
sudo dnf install openssh-server
LinuxでSCPを使ってファイルを安全に転送する方法を徹底解説

ディストリビューションによっては、ソフトウェアファイアウォールでSSHを許可する必要があります。Ubuntuではこの作業は不要ですが、CentOSでは以下のコマンドも忘れずに実行しましょう。

sudo firewall-cmd --add-service=ssh --permanent
sudo firewall-cmd --reload
LinuxでSCPを使ってファイルを安全に転送する方法を徹底解説 LinuxでSCPを使ってファイルを安全に転送する方法を徹底解説

次に、クライアント側にはSSHクライアントが必要です。多くのディストリビューションにはOpenSSHクライアントがプリインストールされていますが、入っていない場合は以下のコマンドでインストールしてください。

# Debian/Ubuntu系
sudo apt install openssh-client
 
# Fedora
sudo dnf install openssh-client

SSHでシステムに接続する

SCPを試す前に、まずSSHが正しく動作することを確認しておきましょう。SSHで接続するには、サーバーのIPアドレスを調べる必要があります。GUI環境のサーバーであれば「システム設定」のネットワークアプレットで確認できますが、ほとんどのサーバーではターミナルでipコマンドを使うのが確実です。

ip a s
LinuxでSCPを使ってファイルを安全に転送する方法を徹底解説

出力結果の中から、eth0やenp1s0(ネットワークインターフェースの接続状況により名称は異なります)の下にあるinetで始まる行を探します。この例ではIPアドレスは192.168.122.201です。

SSH接続をテストするには、Linuxクライアント側のマシンで以下のように入力します。

ssh user@192.168.122.201

「user」の部分は、サーバー上の実際のユーザー名に置き換えてください。

LinuxでSCPを使ってファイルを安全に転送する方法を徹底解説

そのアカウントのパスワードを入力すればログイン完了です。「ホストの信頼性を確認できません」といった質問が表示された場合は、「yes」と答えてください。これは、なりすましサーバーではなく本物のサーバーに接続していることを確認するためのセキュリティチェックです。クライアント側に、サーバーへ直接ログインしたときと同じプロンプトが表示されれば、接続は成功しています。次のステップに進む前に、SSH接続をより安全にする設定を済ませておくのもおすすめです。

SCPでファイルを転送する

SSH接続のテストが済んだら、2台のマシン間でファイルのコピーを始められます。ファイルの安全なコピーにはscpコマンドを使用します。基本の書式は以下のとおりです。

scp /PATH/TO/FILE USER@IP-ADDRESS:PATH/TO/DESIRED/DESTINATION

例えば、ローカルマシンの「backup.txz」というファイルを、IPアドレス192.168.122.201のリモートサーバー上のユーザー「maketecheasier」のホームディレクトリ内にある「backups」フォルダへコピーする場合は、次のように実行します。

scp backup.txz maketecheasier@192.168.122.201:~/backups/
LinuxでSCPを使ってファイルを安全に転送する方法を徹底解説

sshで接続するときと同様に、パスワードの入力を求められます。ユーザー名はコマンド内で指定済みのため、改めて聞かれることはありません。

ワイルドカードを使えば、複数のファイルをまとめて転送することも可能です。

scp *.txz maketecheasier@192.168.122.201:~/backups/

逆に、リモートサーバーからローカルマシンへファイルをコピーするには、引数の順序を入れ替えるだけでOKです。

scp maketecheasier@192.168.122.201:~/backups/backup.txz .

コマンド末尾の「.」は、標準のcpやmvコマンドと同じく「現在のディレクトリ」を意味します。もちろん、別のディレクトリを指定することもできます。

ディレクトリを丸ごと再帰的にコピーするには、-rオプションを使用します。

scp -r backups/ maketecheasier@192.168.122.201:~/backups/

リモートサーバーからローカルマシンへディレクトリを再帰的にコピーする場合は、次のように実行します。

scp -r maketecheasier@192.168.122.201:~/backups/ .

その他の便利なSCPオプション

さらに使いこなしたい方は、コピー中にデータ圧縮を有効にする-Cオプションや、転送時の帯域幅を制限できる-lオプションなどを試してみてください。大きなファイルを扱う際やネットワーク負荷を抑えたい場合に役立ちます。

また、毎回パスワードを入力する手間を省きたい場合は、SSHの鍵認証を設定しておくのがおすすめです。秘密鍵を生成してサーバーに公開鍵を登録すれば、パスワードなしで安全に接続・ファイル転送ができるようになります。


  1. SendAnywhereの使い方徹底解説|ログイン不要でマルチデバイス間のファイル転送を安全・簡単に

    私たちは今、複数のデバイスとプラットフォームが当たり前の時代に生きています。自宅で使うデバイスと職場で使うデバイスが異なるのは珍しいことではありませんし、家族や友人、同僚もそれぞれ異なる環境で暮らしています。そんな中で問題になるのが、デバイスやプラットフォームをまたいでファイルを送受信しなければならない場面です。 メールは最も古くから使われているファイル交換手段の一つですが、必ずしも実用的とは言えません。この課題を解決するために、Apple環境限定のDeskConnect、クラウドベースのDroplr、Dropboxのようなクラウドストレージなど、さまざまなサービスが登場してきました。 その

  2. Windows 10の「近距離共有」機能でファイルをワイヤレス転送する方法

    MicrosoftのWindows 10 April 2018 Update(バージョン1803)には、実用的な新機能が数多く搭載されています。そのひとつが、AppleのAirDropに似た「近距離共有(Nearby Sharing)」です。この機能を使えば、近くにある他のデバイスとファイルやリンクをワイヤレスで共有できます。BluetoothとWi-Fiを利用して、ファイルやフォルダーを手軽に送受信することが可能です。 近距離共有を有効にする方法 この機能を利用するには、まず両方のデバイスでBluetoothまたはWi-Fiがオンになっている必要があります。加えて、設定画面から近距離共有機