SCPコマンドチュートリアル:Remote.Itで実現するシンプルで安全なファイル転送
コンピューター間で安全にファイルをコピーすることは、開発者、システム管理者、IT専門家にとって日常的な作業です。リモートサーバーを管理する場合でも、環境間で設定ファイルを移動する場合でも、**SCP(Secure Copy Protocol)**コマンドは信頼性が高くシンプルなツールです。
このチュートリアルでは、SCPコマンドの基本——その仕組みや使い方——を解説するとともに、Remote.Itがリモートファイル転送にまつわる面倒をどのように取り除くかをご紹介します。Remote.Itを使えば、パブリックIPアドレス、NATトラバーサル、ファイアウォールルール、ネットワークACLを気にすることなく、世界中どこにあるデバイスにもSCPで接続できます。
SCPとは
SCPはSecure Copy Protocolの略で、ネットワーク上のホスト間でファイル転送を可能にします。**SSH(Secure Shell)**上で動作し、暗号化と認証を提供するため、転送中のデータが保護されます。
SCPコマンドの一般的な構文は次のとおりです。
scp [options] source destination
SCPは双方向に使用できます。
- リモートホストへファイルをコピーする
- リモートホストからローカルシステムへファイルをコピーする
SCPコマンドの使用例
よく検索される転送パターンを、そのままコピーして使える形でまとめました。各例の user@remote-host は相手側マシンのSSHログインです。ご自身の環境に置き換えてください(例:pi@192.168.1.20)。
ローカルからリモートへファイルをコピーするSCPコマンド
ローカルのファイルを先に、リモートのコピー先を後に書きます。
scp report.pdf user@remote-host:/home/user/documents/
リモート側で別の名前を付けるには、コピー先をディレクトリではなくファイル名で終えます。
scp report.pdf user@remote-host:/home/user/documents/report-2026.pdf
リモートからローカルへファイルをコピーするSCPコマンド
順序を入れ替え、リモートのファイルを先に、ローカルのコピー先を後に書きます。. は「現在のフォルダー」を意味します。
scp user@remote-host:/var/log/syslog .
scp user@remote-host:/home/user/backup.tar.gz ~/Downloads/
ディレクトリ全体をコピーする
-r(再帰)を付けると、フォルダーとその中身をどちらの方向にもコピーできます。
scp -r ./website user@remote-host:/var/www/
scp -r user@remote-host:/etc/nginx ~/nginx-backup/
複数のファイルをまとめてコピーする
コピー先の前にファイルを並べるか、ワイルドカードを使います。リモート側のワイルドカードは、ローカルのシェルが先に展開しないよう引用符で囲みます。
scp notes.txt config.yaml user@remote-host:/tmp/
scp 'user@remote-host:/var/log/*.log' ./logs/
別のSSHポートを使う
SCPではポートを大文字の -P で指定します(小文字の -p は別の意味です。下記参照)。
scp -P 2222 report.pdf user@remote-host:/home/user/
特定のSSH鍵を使う
scp -i ~/.ssh/my-server-key report.pdf user@remote-host:/home/user/
タイムスタンプの保持、圧縮、詳細表示
-pは元の更新日時と権限を保持します。-Cは転送中のデータを圧縮し、低速な回線で効果があります。-vはSSHのやり取りを表示します。コピーが失敗したときに最初に試すオプションです。
scp -p -C large-file.iso user@remote-host:/data/
2台のリモートホスト間でコピーする
両方のリモートを指定します。-3 を付けるとデータが手元のマシンを経由するため、2台のホストが互いに到達できない場合でも動作します。
scp -3 user@host-a:/data/export.csv user@host-b:/data/
WindowsでのSCP
Windows 10(バージョン1809以降)とWindows 11にはOpenSSHクライアントが含まれているため、追加のソフトウェアなしでPowerShellやコマンドプロンプトから scp を使えます。ローカル側にはWindowsのパスを使います。
scp C:\Users\me\Documents\report.pdf user@remote-host:/home/user/
scp user@remote-host:/home/user/backup.tar.gz C:\Users\me\Downloads\
scp が認識されない場合は、[設定]→[オプション機能]で OpenSSH クライアント を追加してください。
SCPのよくある落とし穴
SCPは強力で使いやすいツールですが、ネットワーク間でファイルを転送する際にはいくつかの課題があります。
- 🔒 ファイアウォールルール:リモートサーバーは、手動で設定しない限り、多くの場合インバウンドのSSHをブロックします。
- 🌐 パブリックIPがない:NATの背後にあるデバイス(家庭用ルーターやセルラーゲートウェイなど)は、ポートフォワーディングを設定しない限り到達できません。
- 🧱 ACLとネットワークポリシー:IT管理者が、アクセスを許可する前にIPを承認またはホワイトリストに登録する必要がある場合があります。
こうした問題は、遅延やITの負担増、そしてしばしば物理的な現地訪問につながります——特にIoTやエッジ展開ではなおさらです。
Remote.Itの登場:ネットワーク設定ゼロでSCPを実現
Remote.Itは、こうしたネットワークに関する頭痛の種をすべて解消します。パブリックIP、ファイアウォールの変更、VPNを必要とせずに、あらゆるデバイスへの安全でプライベートな接続を提供します。
Remote.Itを使えば次のようになります。
- デバイスのIPアドレスを知る必要がありません。
- ポートフォワーディングやNATトラバーサルは不要です。
- デバイスがまるでローカルネットワーク上にあるかのように、SCP経由で接続できます。
🔧 仕組み
Remote.Itは、SSH/SCPのようなサービスを安全なトンネルでラップするプライベートプロキシレイヤーとして機能します。デバイスとそのSSHポートをRemote.Itに登録すると、プラットフォームがプロキシエンドポイントを割り当て、それに対してscp、ssh、あるいはファイルエクスプローラーといった標準ツールを使って接続できるようになります。
Remote.ItでのSCPの使い方
ここでは、Remote.Itに登録したデバイスとの間でSCPを使ってファイルをコピーする方法を説明します。
1. デバイスとサービスを登録する
- 対象デバイスにRemote.Itエージェントをインストールします。
- Remote.ItのWebアプリ、CLI、またはSDKを使って、デバイスとそのSSHポート(通常はポート22)を登録します。
2. SCP用にRemote.Itのプロキシを起動する
CLIを使って接続を開始します。
remoteit connection connect --id <SERVICE_ID>
これにより、次のようなlocalhostエンドポイントが返されます。
127.0.0.1:33000
3. デバイスがローカルにあるかのようにSCPを使用する
scp -P 33000 myfile.txt user@127.0.0.1:/path/to/destination/
これで完了です。デバイスが複数層のNATやファイアウォールの背後にあっても、ファイルは安全にリモートデバイスへ転送されます。
これが重要な理由
Remote.Itがファイル転送のワークフローをどのように変えるか、まとめると次のとおりです。
- ✅ どこからでも動作——同じLANやVPNにいる必要はありません。
- ✅ デフォルトでプライベート——ポートやIPが公開されることはありません。
- ✅ 即時アクセス——ファイアウォールルールやACLの設定をITに待つ必要はありません。
- ✅ IoT対応——エッジデバイス、センサー、スマートゲートウェイに最適です。
- ✅ スケーラブル——デバイスが1台でも数千台でも、同じワークフローを使用できます。
規模を問わずデバイスを構築・管理している場合でも、ネットワーク設定に触れることなくもっと信頼できる方法でファイルを移動したいだけの場合でも、Remote.ItはSCPをワークフローに組み込む最も簡単な方法です。
まとめ
SCPは安全なファイル転送のための信頼できるツールであり続けていますが、その有用性はしばしばネットワーク上の制約によって制限されます。Remote.Itは、その制約を取り除きます。
SCPのシンプルさとRemote.Itの柔軟な接続性を組み合わせることで、両方の良いところを得られます。つまり、ネットワーク設定ゼロでの暗号化されたファイル転送です。
次回、ファイアウォールの背後にあるデバイスにファイルをコピーする必要があるときは、ポートフォワーディングを省略してください。Remote.ItでSCPを使うだけです。