SCPコマンドとは?

SCP(Secure Copy Protocol)は、SSH(Secure Shell)を利用してファイルを安全にリモートマシンへコピーするためのコマンドです。ネットワークを介したファイル転送を暗号化するため、セキュリティを確保しつつデータを送受信できます。

主な特徴

  • SSHを利用するため、安全な通信が可能
  • リモートサーバーとローカルマシン間のファイル転送が可能
  • ディレクトリごと転送できる
  • パスワード認証またはSSH鍵認証が利用可能

SCPの基本構文

SCPの基本的なコマンド構文は以下の通りです

scp [オプション] 転送元ファイル ユーザー名@ホスト名:転送先パス

また、リモートサーバーからローカルへコピーする場合は以下のようになります。

scp [オプション] ユーザー名@ホスト名:転送元ファイル 転送先パス

SCPの具体的な使い方

1. ローカルからリモートへファイルを転送

scp sample.txt user@192.168.1.100:/home/user/
  • sample.txt192.168.1.100/home/user/ に転送
  • user はリモートサーバーのユーザー名

2.リモートからローカルへファイルを取得

scp user@192.168.1.100:/home/user/sample.txt .
  • リモートサーバーの /home/user/sample.txt を現在のディレクトリにコピー

3. ディレクトリごと転送

ディレクトリを転送する場合は -r オプションを追加します。

scp -r myfolder user@192.168.1.100:/home/user/
  • myfolder ディレクトリごと転送

4.指定ポートを使う(デフォルトは22)

SSHのポートがデフォルト(22)以外の場合、-P オプションで指定できます。

scp -P 2222 sample.txt user@192.168.1.100:/home/user/
  • 2222 番ポートを使用して転送

5. SSH鍵を指定して転送

パスワード入力を省略するために、SSH鍵を指定できます。

scp -i ~/.ssh/id_rsa sample.txt user@192.168.1.100:/home/user/

6. 転送の進捗状況を表示

大きなファイルを転送する際は、-v オプションで詳細なログを確認できます。

scp -v sample.txt user@192.168.1.100:/home/user/

7. 帯域幅を制限して転送

ネットワーク負荷を軽減したい場合、-l オプションを使って転送速度を制限できます。

scp -l 500 sample.txt user@192.168.1.100:/home/user/
  • -l 500 は 500 Kbit/s に制限

SCPを使う際の注意点

  1. SSHの設定を確認
    • SCPはSSHを利用するため、リモートサーバーのSSHが有効になっている必要があります。
    • sshd_config の設定で PermitRootLogin no になっている場合、rootユーザーでのSCP転送が制限される可能性があります。
  2. ファイルのパーミッション
    • 転送したファイルのパーミッションが適切でない場合、アクセスできないことがあります。
    • chmodchown コマンドで適切に設定してください。
  3. 鍵認証の設定
    • パスワード入力なしで転送を行うには、SSH鍵を設定しておくと便利です。
    • ssh-copy-id user@192.168.1.100 を実行して、公開鍵を転送しておくとログインがスムーズになります。

まとめ

SCPは、SSHを利用した安全なファイル転送を実現するコマンドであり、ローカルとリモートの間で簡単にファイルをやり取りできます。
ディレクトリの転送や、SSH鍵認証の活用など、用途に応じて適切に使い分けましょう。