scpの使い方

提供: セキュリティ
2014年8月12日 (火) 22:40時点におけるDaemon (トーク | 投稿記録)による版 (関連項目)

移動: 案内検索
スポンサーリンク

scpコマンドは、ファイルをsshで転送するために利用します。

読み方

scp
えすしーぴー

概要

scpコマンドは、ファイルをsshで転送するために利用します。 ローカルのファイルをリモートにコピーしたり、リモートのファイルをローカルにコピーします。

コマンドラインオプション

usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 ... [[user@]host2:]file2

scpコマンドの使い方

ホスト foo のホームディレクトリに、ローカルの /etc/rc.conf を転送します。

% scp /etc/rc.conf foo:

/path/to を再帰的に ホスト foo にコピーします。

% scp -r /path/to foo:

/path/to を再帰的に ホスト foo の /home/tmp/ にコピーします。 /home/tmp/に to のディレクトリが作成されます。

% scp -r /path/to foo:/home/tmp/

ホスト foo の /etc/rc.conf をローカルのホームディレクトリにコピーします。

% scp foo:/etc/rc.conf ~/

ユーザー名を指定する

ホスト foo に ユーザー user1 でログインしてコピーします。 ユーザー名とホスト名は、 @ で区切ります。

% scp -r /path/to user1@foo:

転送スピードを規制する

-l オプションで帯域幅を制限できるので、転送スピードを制限できます。単位は、Kbit/sになります。 800を指定した場合、800Kbit/sなので、100KB/sになります。

scp -r -l 800 /path/to user@foo:

リモートからリモートへダイレクトにコピーする

ホスト hoge で ホスト foo から ホスト bar へコピーする。

hoge% scp foo:/tmp/a bar:/tmp/b

ファイルは、ホスト hoge を経由しません。 foo から bar へダイレクトに転送されます。

リモートからリモートへのコピー時にバイパスする

リモートからリモートへのコピーは、デフォルトでは、ダイレクトに行われます。

hoge% scp foo:/tmp/a bar:/tmp/b
hoge

foo -> bar

foo から bar へのファイル転送時に、scp コマンドの実行ホストを経由(バイパス)して転送できます。

hoge% scp -3 foo:/tmp/a bar:/tmp/b
foo -> hoge -> bar

これは、リモートからリモートに直接的にコピーできないネットワーク構成 / ACL の場合に有効です。

NetCat モード

OpenSSH 5.4 以上の scp には、 netcat モード (ncat ) があります。

ファイルの転送先のリモートホストがゲートウェイサーバー(gw) を経由しないとリーチできない場合、scp は、直接ファイルが転送できないため、ゲートウェイサーバーを経由しなければなりません。 これは、ネットワークACLの制限などによるものです。

foo -> gw -> bar

昔からあるテクニックとして、ncat (nc) などのコマンドと ssh_config の ProxyCommand のオプションを使用して、ファイルを転送してきました。 近年のOpenSSHscp には、netcat モードが追加されています。そのため、ncat / netcat (nc) を使わずに、行うことができます。

~/.ssh/ssh_config に以下の設定を行います。

Host bar
	ProxyCommand ssh user@gw -W %h:%p

ゲートウェイサーバーの sshdsshd_configポートフォワーディング を 許可する必要があります。

AllowTcpForwarding yes

scp コマンドは、以下の通りです。

foo% scp /tmp/a bar:/tmp/a

関連項目




スポンサーリンク