scpコマンドの使い方を徹底解説!SSH経由でファイル転送を安全・簡単に行う方法

Linux環境でリモートサーバーとファイルのやり取りを行う際、便利で安全な手段のひとつが「scp」コマンドです。SSH(Secure Shell)を利用して暗号化された通信を行いながら、ファイルをコピーできるこのコマンドは、日常的な業務からサーバー管理まで、幅広く利用されています。本記事では、scpコマンドの基本的な使い方から、実践的な活用例、注意点までをわかりやすく解説します。初心者の方でも理解しやすいように、具体的なコマンド例を交えながら丁寧に紹介していきます。


scpとは何か?基本的な役割と特徴

scp(secure copy)は、SSHプロトコルを利用して、ファイルを安全にコピーするためのコマンドです。

特徴は以下のとおりです:

  • SSHを利用して通信するため、暗号化されており安全
  • ローカル↔リモート、リモート↔ローカルの両方に対応
  • ディレクトリの再帰的コピーも可能
  • シンプルな構文で初心者にも扱いやすい

SSHアクセスが可能なサーバーがあれば、すぐに利用できる点も大きなメリットです。


scpコマンドの基本構文

scpの基本的な構文は以下の通りです:

scp [オプション] コピー元 コピー先

たとえば、自分のローカル環境からリモートサーバーへファイルを転送する場合は次のようになります。

scp file.txt username@remote_host:/home/username/

逆に、リモートからローカルにファイルをダウンロードしたい場合:

scp username@remote_host:/home/username/file.txt ./

.scpは通常のcpとよく似ていますが、リモートホストの指定にusername@hostの形を使うのが特徴です。


実践例:ローカルからリモートにファイルをコピーする

単一ファイルのコピー

scp myfile.txt user@example.com:/home/user/

このコマンドで、ローカルのmyfile.txtがリモートの/home/user/にコピーされます。

複数ファイルのコピー

scp file1.txt file2.txt user@example.com:/home/user/

スペースで区切ることで、複数ファイルの送信も可能です。


実践例:リモートからローカルにファイルをコピーする

scp user@example.com:/home/user/report.pdf ./

.は現在のディレクトリを意味します。この例では、リモートのファイルreport.pdfが自分のPCのカレントディレクトリに保存されます。


ディレクトリを再帰的にコピーする方法

ディレクトリを含めたコピーを行うには、-rオプションを使用します。

scp -r myfolder user@example.com:/home/user/

このコマンドでは、myfolderディレクトリごとリモートに転送されます。内部のファイルやサブディレクトリもすべて含まれます。


ポート番号を指定したい場合

SSHのデフォルトポート(22番)以外を使っている場合は、-Pオプションで指定します。

scp -P 2222 file.txt user@example.com:/home/user/

ここで注意したいのは、-Pは大文字であることです。小文字の-pは別の意味になります。


ファイル転送時の進捗状況を表示する

scpコマンドはデフォルトで転送進捗を表示しますが、-vオプションを使えば、さらに詳細な通信ログを見ることができます。

scp -v file.txt user@example.com:/home/user/

トラブルシュートや確認用に便利です。


転送に失敗する場合のよくある原因と対処法

1. 接続できない(ホスト名やポート番号の誤り)

SSHが通っていない場合、scpも当然使えません。まずは次のコマンドで接続確認をしましょう。

ssh user@example.com

2. パーミッションエラー

リモート側のディレクトリに書き込み権限がないと転送に失敗します。ls -ldで権限を確認しましょう。

3. ファイアウォールの影響

SSHポートがブロックされている場合、通信できません。ネットワーク管理者に確認する必要があります。


scpとrsyncの違いとは?

似たような機能を持つrsyncというコマンドもあります。主な違いは以下の通りです:

項目scprsync
基本機能ファイルのコピー差分同期やコピー
暗号化SSHで対応SSHで対応可
転送速度常に全データを送信差分のみ送信で高速
オプション少なめで簡単多機能で柔軟だが複雑

単純なファイルコピーにはscp、効率的な同期にはrsyncが向いています。


セキュリティ上の注意点

scpはSSHベースで安全性が高いとはいえ、以下の点に注意しましょう:

  • パスワード認証よりも公開鍵認証を推奨
  • 外部の公開ネットワークでの利用時はVPNなどと併用
  • ファイル名にスペースがある場合はクォートで囲む

例:

scp "my file.txt" user@example.com:/home/user/

まとめ

scpコマンドは、Linuxでファイルをリモートサーバーとやり取りする際に非常に便利なツールです。SSH経由で安全にファイルをコピーでき、コマンドもシンプルで覚えやすいため、初心者から上級者まで幅広く使われています。この記事で紹介した基本構文やオプション、注意点を理解すれば、実際の作業でも安心してscpを使えるようになるでしょう。

SSHを使ったファイル転送に一歩踏み出したい方は、まずは自分のローカル環境とリモートサーバー間で試してみてください。トライ&エラーを重ねながら、少しずつ慣れていくのが上達の近道です。

タイトルとURLをコピーしました