Linuxコマンド辞典 scpコマンド(ネットワーク)
通信を暗号化してリモートホストにファイルをコピーする「scp」コマンドの概要と使い方を記載しています。SCP及びSSHのパスワードを自動入力についても解説。
RHEL Fedora CentOS Vine Deblan Ubuntu Plamo
目次
概要・使用方法
書式
$ scp [オプション] コピー元ファイル名・・・[[ユーザ名@]ホスト名:]コピー先ファイル名
SSHプロトコルを利用してリモートホストへ経路を暗号化してファイルを転送します。sshで利用される公開鍵暗号認証を利用できるので、公開鍵をリモートホストに登録し秘密鍵にパスフレーズをつけなければログインパスワードを入力することなく、暗号化されたファイル転送ができるようになります。-3オプションは、ローカル端末とリモートホストA、リモートホストBの3台構成がある場合に、リモートホストAからリモートホストBに、ローカルからファイルを転送を指示できます。
オプション
-C | 圧縮して通信を行う |
-F ファイル名 | SSHクライアントの設定ファイルを指定する |
-i 秘密鍵 | 公開鍵認証で利用する秘密鍵を指定する |
-P ポート | 接続先のポート番号を指定する(デフォルトでは22/TCP) |
-l 数値 | kビット/sの帯域制限を行う |
-p | 送信元ファイルのタイムスタンプを変更しないで転送する |
-q | 送信状況を示すプログレスバーを表示しない |
-r | ディレクトリを再帰的に送る |
-4 | IPv4で接続する |
-6 | IPv6で接続する |
-3 | リモートホストから別のリモートホストへファイルの転送をする |
SSHを利用してリモートホストにファイルをコピーする
ローカルファイルをリモートホストのユーザーホーム(/home/ユーザー名/)に転送する
$ scp 転送したいファイル ユーザ名@IPアドレス:パス
実行結果
[rin@localhost ~]$ scp test.txt rin@192.168.0.102:~/
rin@192.168.0.102's password:
test.txt 100% 6 16.7KB/s 00:00
[rin@localhost ~]$
ディレクトリをオリジナルファイルのタイムスタンプを変更せず圧縮して転送する
$ scp ディレクトリ ユーザー名@IPアドレス:パス
実行結果
[rin@localhost ~]$ scp -prC ./ rin@192.168.0.102:~/
rin@192.168.0.102's password:
.bash_logout 100% 18 1.0KB/s 00:00
.bash_profile 100% 193 703.0KB/s 00:00
.bashrc 100% 231 955.9KB/s 00:00
lastnotification 100% 11 74.8KB/s 00:00
applet_dirlist 100% 0 0.0KB/s 00:00
session.log 100% 135 804.9KB/s 00:00
log 100% 1067 5.0MB/s 00:00
update-check-3.28
・
・
リモートホストから別のホストにファイル転送する
$ scp -3 IPアドレス:ファイルパス IPアドレス:ディレクトリパス
実行結果
[rin@localhost ~]$ scp -3 10.10.0.1:/tmp/test.txt 192.168.0.102:/tmp/
リモートホスト10.10.0.1から/tmp/text.txtを別のリモートホスト192.168.0.102の/tmp/に転送する
ローカルのディレクトリを再帰的に転送する
$ scp -r ディレクトリ ユーザー名@IPアドレス:/tmp/
実行結果
[rin@localhost ~]$ scp -r ./ rin@192.168.0.102:/tmp/
rin@192.168.0.102's password:
.bash_logout 100% 18 21.1KB/s 00:00
.bash_profile 100% 193 340.5KB/s 00:00
.bashrc 100% 231 511.5KB/s 00:00
lastnotification 100% 11 21.7KB/s 00:00
applet_dirlist 100% 0 0.0KB/s 00:00 100% 876 1.5MB/s 00:00
[rin@localhost ~]$
ssh及びScpでパスワード入力を自動化する。
sshpassというコマンドで、ssh及びSCPコマンドにパスワードを渡して自動化することができます。sshpassコマンドがインストールされていないことがあるので、yumのコマンドでインストールします。
sshpassインストール
sudo yum install -y sshpass
パスワードをscpに渡す構文
sshpass -p パスワード scp -Pポート番号 -C ローカルファイル ログインID@接続先:パス
sshpass -p test scp -P22 -C ./mysql.dump test@192.168.0.10:~/