「scpの使い方」の版間の差分
(同じ利用者による、間の5版が非表示) | |||
行8: | 行8: | ||
[[scp]]コマンドは、ファイルを[[ssh]]で転送するために利用します。 | [[scp]]コマンドは、ファイルを[[ssh]]で転送するために利用します。 | ||
ローカルのファイルをリモートにコピーしたり、リモートのファイルをローカルにコピーします。 | ローカルのファイルをリモートにコピーしたり、リモートのファイルをローカルにコピーします。 | ||
− | + | == コマンドラインオプション == | |
+ | <syntaxhighlight lang="bash"> | ||
+ | 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 | ||
+ | </syntaxhighlight> | ||
== scpコマンドの使い方 == | == scpコマンドの使い方 == | ||
ホスト foo のホームディレクトリに、ローカルの /etc/rc.conf を転送します。 | ホスト foo のホームディレクトリに、ローカルの /etc/rc.conf を転送します。 | ||
行30: | 行35: | ||
% scp foo:/etc/rc.conf ~/ | % scp foo:/etc/rc.conf ~/ | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== ユーザー名を指定する == | == ユーザー名を指定する == | ||
− | |||
ホスト foo に ユーザー user1 でログインしてコピーします。 | ホスト foo に ユーザー user1 でログインしてコピーします。 | ||
ユーザー名とホスト名は、 @ で区切ります。 | ユーザー名とホスト名は、 @ で区切ります。 | ||
行38: | 行41: | ||
% scp -r /path/to user1@foo: | % scp -r /path/to user1@foo: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | == 転送スピードを規制する == | |
+ | -l オプションで帯域幅を制限できるので、転送スピードを制限できます。単位は、Kbit/sになります。 | ||
+ | 800を指定した場合、800Kbit/sなので、100KB/sになります。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | scp -r -l 800 /path/to user@foo: | ||
+ | </syntaxhighlight> | ||
== リモートからリモートへダイレクトにコピーする == | == リモートからリモートへダイレクトにコピーする == | ||
ホスト hoge で ホスト foo から ホスト bar へコピーする。 | ホスト hoge で ホスト foo から ホスト bar へコピーする。 | ||
− | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
hoge% scp foo:/tmp/a bar:/tmp/b | hoge% scp foo:/tmp/a bar:/tmp/b | ||
行47: | 行54: | ||
ファイルは、ホスト hoge を経由しません。 foo から bar へダイレクトに転送されます。 | ファイルは、ホスト hoge を経由しません。 foo から bar へダイレクトに転送されます。 | ||
− | |||
== リモートからリモートへのコピー時にバイパスする == | == リモートからリモートへのコピー時にバイパスする == | ||
− | |||
リモートからリモートへのコピーは、デフォルトでは、ダイレクトに行われます。 | リモートからリモートへのコピーは、デフォルトでは、ダイレクトに行われます。 | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
行71: | 行76: | ||
</pre> | </pre> | ||
− | これは、リモートからリモートに直接的にコピーできないネットワーク構成 / | + | これは、リモートからリモートに直接的にコピーできないネットワーク構成 / ACL の場合に有効です。 |
− | + | ||
== NetCat モード == | == NetCat モード == | ||
− | |||
[[OpenSSH]] 5.4 以上の [[scp]] には、 [[netcat]] モード ([[ncat]] ) があります。 | [[OpenSSH]] 5.4 以上の [[scp]] には、 [[netcat]] モード ([[ncat]] ) があります。 | ||
ファイルの転送先のリモートホストがゲートウェイサーバー(gw) を経由しないとリーチできない場合、[[scp]] は、直接ファイルが転送できないため、ゲートウェイサーバーを経由しなければなりません。 | ファイルの転送先のリモートホストがゲートウェイサーバー(gw) を経由しないとリーチできない場合、[[scp]] は、直接ファイルが転送できないため、ゲートウェイサーバーを経由しなければなりません。 | ||
− | これは、[[ネットワーク]] | + | これは、[[ネットワーク]]のACLの制限などによるものです。 |
<pre> | <pre> | ||
foo -> gw -> bar | foo -> gw -> bar | ||
</pre> | </pre> | ||
− | 昔からあるテクニックとして、[[ncat]] ( | + | 昔からあるテクニックとして、[[ncat]] (nc) などのコマンドと [[ssh_config]] の ProxyCommand のオプションを使用して、ファイルを転送してきました。 |
− | 近年の[[OpenSSH]] の [[scp]] には、[[netcat]] モードが追加されています。そのため、[[ncat]] / [[netcat]] ( | + | 近年の[[OpenSSH]] の [[scp]] には、[[netcat]] モードが追加されています。そのため、[[ncat]] / [[netcat]] (nc) を使わずに、行うことができます。 |
~/.ssh/[[ssh_config]] に以下の設定を行います。 | ~/.ssh/[[ssh_config]] に以下の設定を行います。 | ||
行102: | 行105: | ||
foo% scp /tmp/a bar:/tmp/a | foo% scp /tmp/a bar:/tmp/a | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== 関連項目 == | == 関連項目 == | ||
− | + | {{scp}} | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
* [[ftp]] | * [[ftp]] | ||
− | <!-- | + | * [[wget]] |
− | vim: filetype=mediawiki | + | <!-- vim: filetype=mediawiki |
--> | --> |
2015年9月23日 (水) 16:47時点における最新版
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 のオプションを使用して、ファイルを転送してきました。 近年のOpenSSH の scp には、netcat モードが追加されています。そのため、ncat / netcat (nc) を使わずに、行うことができます。
~/.ssh/ssh_config に以下の設定を行います。
Host bar ProxyCommand ssh user@gw -W %h:%p
ゲートウェイサーバーの sshd の sshd_config でポートフォワーディング を 許可する必要があります。
AllowTcpForwarding yes
scp コマンドは、以下の通りです。
foo% scp /tmp/a bar:/tmp/a
関連項目
- scp関連
- scpの使い方
- scpとsftpの違い
- sftpでchrootする設定
- sftpのみを許可する方法
- SSH File Transfer Protocol
- sftpの使い方
- ftp
- wget