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