scpコマンド

SSHを使用し、ファイルを転送するコマンド。現在はあまり使われておらず、rsyncやSFTPに置き換わっている。


1. ローカルホストからリモートホストへ転送する場合: Windows → Linux
$ scp -i "秘密鍵のファイルパス/秘密鍵" C:/ファイルパス/転送するファイル名.拡張子 リモートホストのユーザ名@IPアドレスまたはドメイン名:/リモートホスト側のファイルパス/ファイルを格納するディレクトリ
> scp -i "C:\Users\user\.ssh\id_ed25519" "C:\Users\user\Documents\Book1.xlsx" server@IPaddress_or_domainname:/home/server/test
実行結果: Book1.xlsx 100% 12KB 2.3MB/s 00:00


2. リモートホストからローカルホストへ転送する場合: Linux → Windows
$ scp -i "秘密鍵のファイルパス/秘密鍵" リモートホストのユーザ名@IPアドレスまたはドメイン名:/ファイルパス/ファイル.拡張子 /ローカルホストのファイルパス/ファイルを格納するディレクトリ
> scp -i "C:\Users\user\.ssh\id_ed25519" server@IPaddress_or_domainname:/home/server/test/Book1.xlsx "C:\Users\user\Documents"
実行結果: Book1.xlsx 100% 12KB 1.3MB/s 00:00


どちらのパターンも、ローカルホスト側で実行できる。転送先にあらかじめディレクトリを作成しておく必要がある。
・悪意のあるサーバが、意図しないファイルをクライアント側に送り込む可能性がある(例:上書き攻撃)。
・クライアント側でワイルドカード(例:scp user@server:/path/* .)を使用した際に、サーバ側でシェルを使って展開するため、意図しないコマンドが実行されるリスクがある。
・ファイル名や転送時間が実行結果として出ない場合、ディレクトリ名の指定など入力の間違いがないか確認する。