【エスシーピー】

scp とは?

最終更新:
💡 SSHの接続を使い、別のホストへファイルをコピーする

ネットワーク越しにファイルをコピーするOpenSSHなどのコマンド。SSHの接続で認証と通信の暗号化を行う。OpenSSH 9.0以降は、同じscpコマンドでも既定の転送方式がSFTPであり、旧SCPプロトコルとコマンド名を区別して理解する。

📌 このページのポイント
SSHの接続でファイルをコピー ローカル リモート 送信 取得 ファイル ファイル SSHで認証・通信を暗号化
送信・取得の例。OpenSSH 9.0以降のscpは既定でSFTPを使う。SSHによる通信の保護は、保存後のファイルを自動的に暗号化する意味ではない。
ひよこ ひよこ
普通のコピーと何が違うの?
ペンギン先生 ペンギン先生
別のホストとの間でファイルをコピーできるよ。SSHの接続を使い、ログインと同じ認証や通信の保護を受ける。暗号化は通信中の保護であって、保存したファイルまで自動的に暗号化するものではないんだ。
ひよこ ひよこ
送るコマンドは?
ペンギン先生 ペンギン先生
例は `scp report.txt user@server:/home/user/`。ローカルのreport.txtを、指定したユーザーとホストの保存先へ送るよ。ユーザー名・ホスト名・パスは自分の環境に置き換える。接続の認証と保存先への書き込み権限も必要だよ。
ひよこ ひよこ
逆方向にも使える?
ペンギン先生 ペンギン先生
例は `scp user@server:/var/log/app.log ./` で、指定したリモートファイルをローカルへコピーするよ。ディレクトリ全体は `-r` を付ける。ただし、ディレクトリ内のシンボリックリンクもたどるので、対象を確認しよう。
ひよこ ひよこ
scpなのにSFTPで送るの?
ペンギン先生 ペンギン先生
OpenSSH 9.0以降ではそうだよ。利用者が打つコマンド名はscpのまま、内部の既定の転送方式がSFTPへ変わった。旧方式を選ぶ `-O` もあるけれど、古いサーバやファイル名の扱いとの互換性が必要かを確認して使うんだ。
ひよこ ひよこ
鍵認証なら何も確認しなくていい?
ペンギン先生 ペンギン先生
SSHの鍵認証を使えるけれど、鍵によってはパスフレーズが必要だよ。正しい接続先かという確認も大事。scpという名前だけで全ての安全性や、どの環境でも同じファイル名の扱いが保証されるわけではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「scp」って出てきたら「SSHの接続を使い、別のホストへファイルをコピーする」と思えばだいたいOK!
📖 おまけ:英語の意味
「secure copy」 = 安全な通信を使うコピー
💬 scpコマンドはsecure copyを表す名前だよ。歴史的なSCPプロトコルを指す場合もあるけれど、現在のOpenSSHのscpが必ず旧SCP方式で転送するという意味ではないんだ。

参考資料

← 用語集にもどる