scpを使うとsshを利用して安全にファイルをコピーして別サーバに持っていくことができる。
このページではscpの使い方についてお伝えしていこう。
目次
scpコマンドとは?
sshを使った接続
「scp」コマンドは「Secure Copy」の略で、sshを使用してリモートホストとローカルホスト間の通信を暗号化したうえで、ファイルをコピー送信するコマンドである。
OpenSSHをインストールすると自動的についてくるので、叩けば使えるはずだ。
scpは、SSH接続を利用するため「ユーザ認証」「ファイルをやりとりするときの情報」これらが共に暗号化される。そのため非常にセキュアだ。
ちなみに
リモートホストとローカルホストの間でファイルコピーを行うコマンドとして「rcp」というコマンドも存在するが通信が暗号化されない。セキュリティ的に脆弱なので使用しないようにしよう。
サーバと安全にファイルをやりとりするには、暗号化処理がほどこされるコマンドを使用することを念頭においておきたい。
書式について
リモートからローカルにコピーする
$ scp <ユーザ名>@<アドレス>:<パス> <ローカルのファイルパス>
ローカルからリモートにコピーする
$ scp <ローカルのファイルパス> <ユーザ名>@<アドレス>:<パス>
となっている。リモートとローカルの区別が若干ややこしいが
$ scp <コピー元> <コピー先>
となっており。要は「cp」コマンドと同じ要領である。
基本的に一部同じオプションが通用する。
ディレクトリ単位でのコピーで使用される「-r」オプションなどだ。
基本的な使い方
SSHを使用しているためリモートホストからローカルホストへファイルをコピーする場合、初めて接続するホストの場合、SSH接続時と同じくホスト認証とユーザ認証がおこなわれる。
$ scp ken@192.168.12.1:/home/hoge/testfile.txt .
次からはパスワード入力画面が直接あらわれる。
$ scp ./testfile.txt hoge@192.168.12.1:/home/hoge
公開鍵認証をしている場合でも同じ要領でファイルのやり取りが可能だ。基本的に「~/.ssh」のしたをデフォルトで参照するようになっている。明示的に秘密鍵のファイルを指定したい場合は「-i」オプションを使用する。
$ scp -i ~/.ssh/id_ecdsa testfile.txt ken@192.168.12.200:/home/hoge/
主なオプションについて
-4
通信にipv4アドレスを使用する
-6
通信にipv6アドレスを使用する
-C
通信を圧縮
-p
パーミッション情報などをなるべくのこしてコピー
-q
経過などを表示しない、静に動作する
-r
再帰的コピー、ディレクトリごとコピーするときに使用する。
-i
秘密鍵を明示的に指定する。指定がなかった場合「~/.ssh」を参照する
まとめ
このページではscpでのコピー方法についてお伝えした。SSHに付随してくる便利な機能だ。
参考にしていただければと思います。