「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]] の場合に有効です。
+
これは、リモートからリモートに直接的にコピーできないネットワーク構成 / ACL の場合に有効です。
 
+
 
== NetCat モード ==
 
== NetCat モード ==
 
 
[[OpenSSH]] 5.4 以上の [[scp]] には、 [[netcat]] モード ([[ncat]] ) があります。
 
[[OpenSSH]] 5.4 以上の [[scp]] には、 [[netcat]] モード ([[ncat]] ) があります。
  
 
ファイルの転送先のリモートホストがゲートウェイサーバー(gw) を経由しないとリーチできない場合、[[scp]] は、直接ファイルが転送できないため、ゲートウェイサーバーを経由しなければなりません。
 
ファイルの転送先のリモートホストがゲートウェイサーバー(gw) を経由しないとリーチできない場合、[[scp]] は、直接ファイルが転送できないため、ゲートウェイサーバーを経由しなければなりません。
これは、[[ネットワーク]]の[[ACL]]の制限などによるものです。
+
これは、[[ネットワーク]]のACLの制限などによるものです。
 
<pre>
 
<pre>
 
foo -> gw -> bar
 
foo -> gw -> bar
 
</pre>
 
</pre>
  
昔からあるテクニックとして、[[ncat]] ([[nc]]) などのコマンドと [[ssh_config]] の ProxyCommand のオプションを使用して、ファイルを転送してきました。
+
昔からあるテクニックとして、[[ncat]] (nc) などのコマンドと [[ssh_config]] の ProxyCommand のオプションを使用して、ファイルを転送してきました。
近年の[[OpenSSH]] の [[scp]] には、[[netcat]] モードが追加されています。そのため、[[ncat]] / [[netcat]] ([[nc]]) を使わずに、行うことができます。
+
近年の[[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>
 
 
== 関連項目 ==
 
== 関連項目 ==
* [[sftp]]
+
{{scp}}
* [[scpとsftpの違い]]
+
* [[sftpでchrootする設定]]
+
* [[sftpのみを許可する方法]]
+
* [[ssh]]
+
* [[sshの使い方]]
+
* [[rsync]]
+
* [[Secure Shell]]
+
* [[ssh]]
+
 
* [[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 のオプションを使用して、ファイルを転送してきました。 近年の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

関連項目