Secure Copy(scp)は、sftp同様、Secure Shell(ssh)に含まれるsshの機能を使ってセキュリティの高い(セキュアな)ファイル転送を行うコマンドの一つである。scpで使用される通信プロトコルは、Secure Copy Protocol(SCP)と呼ばれる。
SSHを介してファイル転送を行うプロトコルとしてはSSH File Transfer Protocol(以下SFTP)があり、両者はしばしば比較される。その際、SCPはより軽く、SFTPはより高機能と評されることがある[1]。2019年4月、OpenSSHの開発チームは「scpのプロトコルはもはや時代遅れで柔軟性がなく、修正が困難になっている」とし、SFTPやrsyncなど他のファイル転送プロトコルの使用を勧めている[2][3]。scpコマンド自体についても、プロトコルにSFTPを使用するオプションが追加されている[4]。その後、OpenSSH 9.0以降ではscpコマンドがSFTPプロトコルをデフォルトで使用するようになった。[5]
認証情報(たとえばパスワード認証なら、ユーザー名やパスワード)と、セッション中でやり取りされるデータとの両方ともが、暗号化されてネットワーク上を流れる。Unixで古くから使われているリモートファイル転送コマンドrcp(Remote CoPy)のセキュアなバージョンといえる。コマンドラインの指定方法はrcpとほぼ同じである。rcpは暗号化などに対応しておらず、安全ではない。ある種のシステムではrcpという名前で起動しようとするとscpコマンドを実行する。
ssh-agentコマンドなどと組み合わせて利用すれば、コピー時に認証情報の入力が不要で、cpやrcp同様に利用できる。
「SCPが対応する、1ファイルの転送可能な最大サイズは4GB」と解説されることがあるが[6]、これは正確ではない。プロトコル自体にはファイルサイズ制限はなく、最大サイズはクライアントおよびサーバのソフトウェアとOS、そしてファイルシステムに依存する。例えば、OpenSSHでは実質上ファイルサイズの制限なく取り扱えるようになっている[7]。
Windowsには、WinSCPというSCPを用いるGUI対応ソフトがある[8]。
脚注
関連項目