インフラ

SCPコマンドとは?基本構文・主要オプション・SSH越しの安全なファイル転送を実装者向けに解説【2026年版】

SCPコマンドは、SSHの暗号化通信の上でローカルとリモートサーバーの間のファイルをコピーするコマンドです。この記事では、scp 転送元 転送先という基本構文と、実務で使う-r(ディレクトリ再帰)・-P(ポート指定)・-i(鍵指定)・-C(圧縮)・-p(属性保持)を、コピー方向ごとの書き方とともに整理します。あわせて、OpenSSH 9.0(2022-04-08公開)でscpが内部プロトコルをSFTPへ切り替えた変更点と、SFTP・rsyncとの使い分けの判断基準まで、実装者が本番で迷わないところまで踏み込みます。

目次

まとめ:SCPの要点とrsync・SFTPとの使い分けの判断基準

SCPは、SSHの認証と暗号化をそのまま使い、単発のファイル転送を1行で終わらせたいときに向くコマンドです。鍵とポートが通っていれば、追加のサーバー設定なしにローカルとリモートを双方向にコピーできます。学習コストは低く、踏み台越しの手元作業やデプロイ確認の一時転送では今も実用的な選択肢になります。

一方、OpenSSH 9.0以降のscpは内部でSFTPプロトコルを使う実装へ切り替わり、Red Hat Enterprise Linux 9では従来のscp・rcpプロトコルが非推奨に位置づけられました。差分同期やディレクトリの継続複製、再開したい大容量転送では、rsyncやSFTPのほうが実務に噛み合います。判断の軸は単純です。単発ならSCP、繰り返しと差分ならrsync、閲覧しながらの部分操作ならSFTP。下の比較表と採用条件で選び分けてください。

SCPコマンドの仕組みとSSH接続を介したファイル転送の流れ

SCPは Secure Copy Protocol の略で、UNIX系OSのrcp(remote copy)をSSH上で安全に置き換えたコマンドです。転送経路はSSHセッションそのもので、認証と暗号化はSSHの仕組みを引き継ぎます。まず、SCPが何の上で動くのかを押さえます。

SCPの定義とSSH・rcpとの関係および前提となる接続条件

SCPはSSHのコネクション上でファイルを読み書きするため、リモート側でSSHサーバー(sshd)が起動し、既定のポート22で待ち受けていることが前提になります。SSH接続が確立できない環境では、SCPも動きません。公開鍵認証やポート番号、known_hostsの扱いといった土台は、SSH接続の仕組みと公開鍵認証・ポート22の運用設定で解説した内容がそのまま当てはまります。SCPを使う前に、対象ホストへsshでログインできることを先に確かめるのが近道です。

SCPが動く基盤はLinux・UNIX系のシェル環境です。実行者・パーミッション・パスの概念を含む土台はLinuxの仕組みとサーバー用途に整理しています。

ローカルとリモートを指定するSCPの基本構文とコピー方向の書き分け

基本構文は「scp [オプション] 転送元 転送先」で、リモート側は「ユーザー名@ホスト:パス」の形で表します。方向は、転送元と転送先のどちらにリモート指定を置くかだけで決まります。

  • ローカルからリモートへ送るアップロード:scp ./app.tar.gz [email protected]:/var/www/releases/
  • リモートからローカルへ取るダウンロード:scp [email protected]:/var/log/nginx/access.log ./
  • サーバー間で直接コピー:scp user@hostA:/data/dump.sql user@hostB:/tmp/

リモートのパスは、絶対パスとホーム基準の相対パスを使い分けられます。転送先ディレクトリの末尾スラッシュは、「そのディレクトリ内に置く」という意図を明確にする書き方です。これで上書き事故を減らせます。転送先が接続先のサーバーの役割と種類のどれか(Web・DB・踏み台)かを意識すると、パス設計を誤りにくくなります。

公開鍵認証を前提としたパスワードレス転送の設計と鍵の権限管理

SCPの認証はSSHと同一で、実務では公開鍵認証を既定にします。手元の秘密鍵(~/.ssh/id_ed25519など)に対応する公開鍵をリモートの~/.ssh/authorized_keysへ登録しておけば、パスワードなしの転送が可能です。鍵を明示するときは-iで指定します。

CIやcronから自動転送する場合、パスワードをスクリプトに埋めるのは避け、鍵認証か、鍵をssh-agentに載せる方式にします。鍵ファイルのパーミッションが緩い(600でない)と、sshd側が鍵を拒否して転送が無言で失敗します。鍵の権限確認を運用チェックに含めておくと安全です。

実務で使うSCPの主要オプションとコピー方向別の記述パターン

SCPは覚えるオプションが少なく、実務で使うのは5つ前後に収まります。頻度の高い順に、実行例つきで整理します。

実務で頻度の高いSCPオプション(-r・-P・-i・-C・-p)の一覧と役割

迷ったら、この表の範囲で足ります。使用頻度の高い順に並べています。

オプション 役割
-r ディレクトリを再帰的にコピー
-P ポート SSHのポート番号を指定
-i 秘密鍵ファイルを指定
-C 転送データを圧縮
-p 更新時刻とパーミッションを保持

混同しやすいのは-P(大文字でポート)と-p(小文字で属性保持)です。sshクライアント側はポートが小文字の-pなので、SCPだけ大文字と覚えると取り違えを防げます。

ディレクトリ一括転送と非標準ポート・専用鍵を同時指定する手順

ディレクトリごと送るには-rを付けます。本番デプロイでは、非標準ポートと専用鍵を同時に指定する場面が多くなります。

  1. 転送内容を確認:ls -la ./dist
  2. ポート2222・専用鍵でディレクトリ転送:scp -r -P 2222 -i ~/.ssh/deploy.pem ./dist [email protected]:/var/www/app/
  3. リモートで反映を確認:ssh -p 2222 [email protected] "ls /var/www/app/dist"

オプションは-rPのようにまとめて書けますが、値を取る-P-iの直後には引数が続くため、分けて書くとレビュー時の事故を減らせます。転送先の親ディレクトリが無いと失敗するので、先にmkdir -pで用意する手順を挟みます。

大容量データの圧縮転送と更新時刻・パーミッションの属性保持設定

DBダンプやアーカイブのように圧縮が効くテキスト主体のデータでは、-Cが転送時間を縮めます。すでに圧縮済みの画像・動画・zipでは-Cの効果はほぼ無く、CPU負荷だけが増えるため付けません。設定ファイルやログを原本のまま残すときは-pで更新時刻とパーミッションを保ちます。

単発の受け渡しでなく、非エンジニアも含む相手へ繰り返し送る用途なら、コマンド運用より大容量ファイル送信サービスの種類と選び方で扱うGUI型の手段のほうが運用コストを下げられます。SCPは、サーバーに鍵で入れる相手同士の転送に向くツールだと割り切ると選択を誤りません。

OpenSSH 9.0以降のSCPで変わったSFTPプロトコル既定化と非推奨

汎用の使い方記事では触れられないものの、実装者が2026年時点で押さえるべき変化があります。scpは、見た目の使い方は同じでも、内部で使うプロトコルが世代交代しました。

OpenSSH 9.0でscpがSFTPプロトコルへ切り替わった経緯と-Oフラグ

OpenSSH 9.0(2022-04-08公開)で、scpは従来のscp・rcpプロトコルからSFTPプロトコルを既定で使う実装に変わりました。旧scp・rcpは、リモートのファイル名をリモートシェルで展開する設計で、ファイル名のメタ文字を二重引用符で守る必要がありました。SFTPプロトコル版ではこの脆く煩雑な引用処理が不要になり、旧来のクセに依存した書き方はかえって転送失敗の原因になり得ます。旧プロトコルへ戻す必要がある場合は-Oフラグで明示します。

Red Hat Enterprise Linux 9での非推奨と安全な移行の指針

Red Hat Enterprise Linux 9のリリースノートでは、scp・rcpプロトコルが非推奨(deprecated)として扱われ、将来的に無くなり得る機能に分類されています。互換で問題が出やすいのは、他ユーザーのホーム相対パス指定や、scp host:*のようなワイルドカード展開です。運用スクリプトにこれらが残る場合は、OpenSSHの更新で挙動が変わる前に、SFTP相当の書き方かrsyncへ寄せるのが安全側の判断になります。

SCP・SFTP・rsyncの使い分けと本番運用での採用判断の軸

SCPを使うか否かは、単発か繰り返しか、差分が要るかで決めます。ここは独自の判断として言い切ります。

SCP・SFTP・rsyncの得意領域と差分転送・再開可否の比較

3手段の性格を、得意な用途と差分・再開の観点で並べます。まず全体像を押さえてください。

観点 SCP SFTP rsync
得意な用途 単発の一括コピー 対話的な閲覧と部分操作 差分同期と継続複製
差分転送 非対応(毎回全量) 非対応 対応(変更分のみ)
転送の再開 不可 実装により可 可(部分再開に対応)
学習コスト 低い 低い やや高い
今後の位置づけ 非推奨化の動き 標準的 標準的

rsyncもSSHを通せるため、認証と暗号化の土台はSCPと同じ考え方で設計できます。差分転送を持つrsyncは、定期バックアップのように変わった分だけを繰り返し送る運用と相性がよい手段です。バックアップ全体の設計はPC・サーバー・クラウド別のバックアップ手順と運用設計を土台にすると、転送手段と保存方針を分けて考えられます。

SCPを採用してよい単発作業の条件と見送るべき運用の失敗場面

採用してよいのは、次の条件がそろう単発作業です。相手サーバーへ鍵で入れて、送るのは1回きり、差分同期も転送再開も不要で、ファイル数が数個から数十個に収まる場合。踏み台越しにデプロイ物を1本置く、障害調査でログを1つ手元に落とす、といった作業はSCPが最短です。手元に落とす前にサーバー上で該当行だけ絞り込むなら、grepコマンドの使い方が起点になります。

見送るべきは、次のいずれかに当てはまる場面です。

  • 数百MB以上を不安定な回線で送る(再開不可がリスクになる)
  • 毎晩ディレクトリを同期する(全量転送が無駄になる)
  • 非エンジニアが定常運用する(コマンド運用が属人化する)
  • 大量の小ファイルを頻繁に送る(1ファイルごとのオーバーヘッドが積み上がる)

これらはrsyncやサービス型へ寄せるほうが、運用コストと事故率の両方を下げられます。

本番サーバーでの鍵・パーミッション管理と転送自動化の設計勘所

SCPを本番へ組み込むときの失点は、ほぼ鍵とパーミッションに集約されます。デプロイ用の鍵はアカウントを分けて権限を絞り、authorized_keyscommand=from=で使える操作と接続元を制限するのが定石です。転送先の所有者とパーミッションは-pで原本を保つか、転送後にchownchmodでそろえます。

複数クラウドをまたぐ本番環境の転送設計や自動化まで外部の設計者と組みたい場合は、AWS・Google Cloud・Azureのインフラ構築支援で、鍵管理・踏み台・デプロイ経路を含めて相談できます。手元のコマンド運用から、監査に耐える転送基盤へ引き上げる段階で検討する価値があります。

SCPコマンドの使い方・オプション・注意点についてのよくある質問

SCPの実運用でつまずきやすい点を、実際に検索される質問に沿って答えます。

SCPでポートを指定するオプションは大文字ですか小文字ですか?

SCPでポートを指定するのは大文字の-Pです。小文字の-pは更新時刻とパーミッションの保持で、意味が異なります。sshコマンド側はポートが小文字の-pのため取り違えが起きやすく、SCPだけ大文字と覚えておくと安全です。

SCPでディレクトリごと転送するにはどうしますか?

-rを付けて「scp -r 送信元ディレクトリ 送信先」のように書くと、ディレクトリを再帰的にコピーできます。転送先の親ディレクトリが無いと失敗するので、先にmkdir -pで用意しておくと確実です。大量ファイルや差分同期が絡む場合は、rsyncのほうが向いています。

OpenSSH更新後にSCPが失敗するのはなぜですか?

OpenSSH 9.0以降、scpは内部でSFTPプロトコルを既定で使うため、旧来のワイルドカード展開(host:*)や他ユーザーのホーム相対パス指定に依存した書き方が失敗することがあります。暫定回避は-Oフラグで旧プロトコルへ戻す方法ですが、恒久策はSFTP相当の書き方かrsyncへ移すのが安全です。

SCPとSFTPはどちらを使うべきですか?

1行で単発コピーを済ませたいならSCP、リモートのファイル一覧を見ながら部分的に取得や削除をするならSFTPが向きます。OpenSSH 9.0以降はscpも内部でSFTPプロトコルを使うため、安全性の土台は同等です。継続的な差分同期が要るなら、rsyncを選びます。

SCPの転送速度が遅いときの対処法は?

テキスト主体のデータなら-Cの圧縮で改善する場合があります。ただし圧縮済みの画像・動画・zipでは効果がほぼ無く、CPU負荷だけが増える点に注意してください。多数の小ファイルで遅いなら、tarで1つにまとめてから転送するか、差分転送のあるrsyncへ切り替えると速くなります。

関連記事

資料請求

RELATED POSTS 関連記事