「scpの使い方」の版間の差分
(ページの作成:「<!-- vim: filetype=mediawiki --> ;scp:えすしーぴー __TOC__ == 概要 == scpコマンドは、ファイルをsshで転送するために利用し...」) |
|||
行1: | 行1: | ||
− | + | [[scp]]コマンドは、ファイルを[[ssh]]で転送するために利用します。 | |
− | + | ||
− | + | ||
+ | '''読み方''' | ||
;[[scp]]:えすしーぴー | ;[[scp]]:えすしーぴー | ||
− | |||
__TOC__ | __TOC__ | ||
== 概要 == | == 概要 == | ||
− | |||
[[scp]]コマンドは、ファイルを[[ssh]]で転送するために利用します。 | [[scp]]コマンドは、ファイルを[[ssh]]で転送するために利用します。 | ||
ローカルのファイルをリモートにコピーしたり、リモートのファイルをローカルにコピーします。 | ローカルのファイルをリモートにコピーしたり、リモートのファイルをローカルにコピーします。 | ||
== 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: | 行26: | ||
</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> | </syntaxhighlight> | ||
+ | == ユーザー名を指定する == | ||
− | = | + | ホスト foo に ユーザー user1 でログインしてコピーします。 |
+ | ユーザー名とホスト名は、 @ で区切ります。 | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | % scp -r /path/to user1@foo: | ||
+ | </syntaxhighlight> | ||
− | + | == リモートからリモートへダイレクトにコピーする == | |
+ | ホスト hoge で ホスト foo から ホスト bar へコピーする。 | ||
+ | |||
+ | <syntaxhighlight lang="bash"> | ||
+ | hoge% scp foo:/tmp/a bar:/tmp/b | ||
+ | </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> | ||
+ | |||
+ | == 関連項目 == | ||
+ | * [[sftp]] | ||
+ | * [[scpとsftpの違い]] | ||
+ | * [[sftpでchrootする設定]] | ||
+ | * [[sftpのみを許可する方法]] | ||
* [[ssh]] | * [[ssh]] | ||
* [[sshの使い方]] | * [[sshの使い方]] | ||
* [[rsync]] | * [[rsync]] | ||
+ | * [[Secure Shell]] | ||
+ | * [[ssh]] | ||
+ | * [[ftp]] | ||
+ | <!-- | ||
+ | vim: filetype=mediawiki | ||
+ | --> |
2013年10月4日 (金) 22:48時点における版
scpコマンドは、ファイルをsshで転送するために利用します。
読み方
- scp
- えすしーぴー
目次
概要
scpコマンドは、ファイルをsshで転送するために利用します。 ローカルのファイルをリモートにコピーしたり、リモートのファイルをローカルにコピーします。
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:
リモートからリモートへダイレクトにコピーする
ホスト 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