「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