Airpods

SSH / SCP を使ってサーバーからファイルをダウンロードする方法

SSH / SCP を使ってサーバーからファイルをダウンロードする方法

OS Xのターミナルユーザーは、コマンドラインでscpツールを使用することで、SSH経由で任意のリモートサーバーからファイルを安全にダウンロードできます。つまり、scpはsshと同等のセキュリティレベルを提供し、同じ認証を必要とするため、ファイルをリモートサーバーに安全に保存し、外部に公開することなくローカルストレージに転送できるということです。


scp を使った安全なファイルダウンロードは、macOS X、BSD、Linux で SSH とコマンドラインを日常的に使用する上級ユーザーを主な対象としています。十分なコマンドライン経験を持つユーザーであれば、SSH と scp を使ったリモートファイルのダウンロードは簡単で、ファイル転送が完了するとリモート接続が切断されるという便利な機能があります。そのため、高速なファイルダウンロードには scp が sftp よりも優先されますが、もちろん sftp も使用できます。

SSHセキュアコピーを使用してリモートサーバーからファイルをダウンロードする

これはリモートサーバーでsshが有効になっていることを前提としています。マシンにsshで接続できる場合は、scpも有効になっている可能性があります。リモートサーバーをお持ちでない場合は、Mac OS Xマシン間、または事前にMacでsshとリモートログインを有効にしておけばlocalhostで試すことができます。

リモート ファイルを安全にダウンロードするために scp (セキュア コピー) を使用する基本的な構文は次のとおりです (ユーザー、サーバー、パス、ターゲットを適宜置き換えます)。

scp user@server:/path/to/remotefile.zip /Local/Target/Destination

たとえば、サーバー IP 192.168.0.45 上のリモート ユーザー「osxdaily」のホーム ディレクトリにある「filename.zip」という名前のファイルをローカル デスクトップにダウンロードする場合、構文は次のようになります。

% scp [email protected]:filename.zip ~/Desktop/
Password:
filename.zip 100% 126 10.1KB/s 00:00
%

認証が正しいと仮定すると、対象ファイルはすぐに対象先へのダウンロードを開始し、ファイルのダウンロードが進むにつれて、完了率、ダウンロード速度、および経過転送時間が表示されます。

コマンドラインでは通常、正確な構文を指定することが重要です。

ファイル名またはパス名にスペースが含まれている場合は、次のようにパスに引用符またはエスケープ文字を使用できます。

scp [email protected]:"/some remote directory/filename.zip" ~/Desktop/

scp は、構文を調整することでリモート サーバーにファイルを安全に配置するためにも使用できますが、ここではファイルのアップロードではなくファイルのダウンロードに焦点を当てています。

SSHを初めて使用し、自分でテストする場合、そしてリモートサーバーに一度も接続したことがない場合は、実際にリモートマシンに接続するかどうかを確認するメッセージが表示されます。これは「はい」または「いいえ」で回答するとダウンロードが開始されます。
% scp [email protected]:filename.zip ~/Desktop/
The authenticity of host '192.168.0.4 (192.168.0.4)' can't be established.
ECDSA key fingerprint is SHA256:31WalRuSLR83HALK83AKJSAkj972JJA878NJHAH3780.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.4' (ECDSA) to the list of known hosts.
Password:
filename.zip 100% 126 0.1KB/s 00:00
%

繰り返しになりますが、接続が承認され、ログインが成功すると、リモート ファイルはターゲット サーバーからローカルホストにダウンロードされます。

scp を使用してリモート サーバーから複数のファイルをダウンロードすることもできます。

scp user@host:/remote/path/\{file1.zip,file2.zip\} /Local/Path/

このようなリモートファイルダウンロードにSSHを使用するのは、認証を必要とする安全な転送に最適です。もちろん、リモートサーバーからcurlやwgetを使ってファイルをダウンロードすることもできますが、curlやwgetでアクセスできるファイルは外部からもアクセスできてしまう傾向があります。一方、SSHやscpは認証またはキーを必要とし、3DES暗号化を使用するため、はるかに安全です。