PSCP, PuTTY セキュアコピークライアントは、SSH 接続を使ってコンピュータ間で安全にファイル転送するためのツールです。
もし SSH-2 サーバがあるならば、対話型の操作は PSFTP (chapter 6 参照) がよいでしょう。ただし PSFTP は SSH-1 サーバでは通常動作しません。
PSCP はコマンドラインアプリケーションです。つまりアイコンをダブルクリックしても動作しませんので、代わりにコンソールウインドウを開きます。 Windows ME 以前では“MS-DOS プロンプト”と呼ばれていました。 Windows NT, XP 以降では“コマンドプロンプト”と呼ばれています。 スタートメニューのプログラムから選択できます。
PSCP を開始するには PATH
か現在のディレクトリにそれが配置されていなくてはなりません。 PSCP のあるディレクトリを PATH
環境変数に入れるには、コンソールウインドウに以下をタイプします:
set "PATH=C:\path\to\putty\directory;%PATH%"
これはそのコンソールウインドウを閉じるまで有効です。 PATH
をより長く有効にするには、Windows NT, XP 以降ではシステムコントロールパネルの環境変数タブを使います。 Windows ME 以前では上記のような set
コマンドを AUTOEXEC.BAT
に記述します。
訳注: 普段エクスプローラを使っている場合はコントロールパネルで変更するよりも環境変数を設定してからコマンドプロンプトを起動する (start /b cmd
) バッチファイルを作る方が手軽でポータブルです。もちろん、現在のディレクトリがどこであれ、フルパスを指定すれば直接起動できます。
コンソールウインドウを起動したら、pscp -h
とタイプすると使い方のメッセージが表示されます。 PSCP のバージョンと使い方の簡単な概要を表示します:
C:\>pscp -h
PuTTY Secure Copy client
Release 0.83
使い方: pscp [オプション] [ユーザ名@]接続先:コピー元 保存先
pscp [オプション] コピー元 [コピー元...] [ユーザ名@]接続先:保存先
pscp [オプション] -ls [ユーザ名@]接続先:ファイルパターン
オプション:
-V バージョン情報を表示して終了する
-pgpfp PGP 鍵の指紋を表示して終了する
-p ファイルの属性を維持する
-q 無口(quiet), 状態を表示しない
-r ディレクトリを再帰的にコピーする
-v 冗長(verbose)にメッセージを表示する
-load sessname 保存済みセッションから読み込む
-P port 指定したポートに接続する
-l user 指定したユーザ名で接続する
-pwfile file ファイルに書かれたパスワードでログイン
-1 -2 指定 SSH プロトコルバージョンの使用を強制する
-ssh -ssh-connection
特定の SSH プロトコルの使用を強制する
-4 -6 IPv4 / IPv6 の使用を強制する
-C 圧縮を有効にする
-i key ユーザ認証に使用する秘密鍵
-noagent Pageant を使用しない
-agent Pageant を使用する
-no-trivial-auth
認証が瑣末に完了した場合に切断する
-hostkey aa:bb:cc:...
ホスト鍵を手動で指定する(繰り返し可)
-batch 対話型プロンプト無効
-no-sanitise-stderr 制御文字を標準エラー出力から除去しない
-proxycmd command
'command' をローカルプロキシとして使用
-unsafe サーバサイドのワイルドカードを許可(危険)
-sftp SFTP プロトコルの使用を強制する (訳注:推奨)
-scp SCP プロトコルの使用を強制する
-sshlog file
-sshrawlog file
プロトコルの通信の詳細をファイルに記録する
-logoverwrite
-logappend
同名のログファイルが存在した場合の処理を指定する
[Custom]
-limit num
個々のファイルのアップロード速度を指定した kbps 値に制限する
(Unix の scp
コマンドに慣れている場合、PSCP のインターフェイスはとても似ています。)
pscp [オプション] [ユーザ名@]接続先:コピー元 保存先
サーバ example.com
のユーザ fred
として接続し ファイル /etc/hosts
をローカルの c:\temp\example-hosts.txt
に保存するには次のようになります:
pscp fred@example.com:/etc/hosts c:\temp\example-hosts.txt
pscp [オプション] コピー元 [コピー元...] [ユーザ名@]接続先:保存先
ローカルのファイル c:\documents\foo.txt
をサーバ example.com
にユーザ fred
として接続してリモートの /tmp/foo
に保存するには次のようになります:
pscp c:\documents\foo.txt fred@example.com:/tmp/foo
ワイルドカードを使うと複数のファイルをどちらかに転送できます:
pscp c:\documents\*.doc fred@example.com:docfiles
pscp fred@example.com:source/*.c c:\source
しかし、二番目の例 (ワイルドカードをリモートファイルの複数指定に使う方法) は次のような趣旨の警告が表示されます: “警告: ファイル“*.c
”の要求に対してリモートホストが“terminal.c
”を保存するように応答しました。もし指定がワイルドカードならば SSH-2 にアップグレードするか “-unsafe
” オプションを使ってください。ファイルの名前変更は禁止されています。”
これは古い形式のSCP プロトコルの基礎的な危険性によるものです。クライアントはワイルドカードの名称 (*.c
) をサーバに送り、サーバはワイルドカードに一致するファイル名一覧を返します。しかしサーバが異なったパターンを返してあなたの他のファイルを上書きするのを防止できません。たとえばあなたが *.c
を要求したとき、サーバが AUTOEXEC.BAT
を返してウイルスをインストールするかもしれません。クライアントは受け取ったファイル名がパターンに一致するかどうか確実には検証できません。
PSCP はより新しい SFTP プロトコル (SSH-2 の一部) を可能ならば使用します。こちらはセキュリティ上の欠点はありません。 SFTP に対応した SSH-2 サーバに接続するならば、この警告は表示されません。 (-sftp
オプションで SCP プロトコルを使わないように強制できます。 Section 5.2.2.6 を参照してください。)
訳注:通常 SSH-1 を使うことはなく、また正しく設定された SSH-2 サーバでは SFTP が利用できないこともないため、常に -sftp
オプションの利用を推奨します。
どうしてもサーバ側のワイルドカードを SSH-1 で使いたいならば、-unsafe
オプションを使います:
pscp -unsafe fred@example.com:source/*.c c:\source
これで警告メッセージを抑止してファイル転送が実行されます。しかしこのオプションを使った場合、サーバが保存先ディレクトリにどんなファイルでも書き込めることに留意してください。なのでこのオプションはサーバ管理者が悪意を持たないこと (そしてサーバマシンを悪意のある人にクラックされないこと) を信用できる場合だけに使うべきです。別の方法として、そのようなダウンロードを新しく作った空のディレクトリに行います。 (安全でない“unsafe”モードでも、PSCP は依然としてサーバが“..
”を含むパスでローカルディレクトリの外に出ようとすることは防ぎます。)
ユーザ名
リモートサーバのログイン名です。省略すると、ホスト名
が PuTTY の保存済みセッションの場合は、その設定で指定したユーザ名を使います。そうでなければ PSCP はローカルの Windows のユーザ名を使おうとします。
接続先
リモートサーバの名前、もしくは PuTTY の保存済みセッションの名前です。後者の場合、セッション設定からホスト名、ポート番号、暗号化種別とユーザ名を使います。
コピー元
コピーするファイル (複数可能) です。 ワイルドカードが使用できます。ワイルドカードの文法は適用するシステムによって異なります。 Windows から Unix へ の場合、Windows の書式 (例えば *.*
) を使いますが、Unix から Windows へ の場合、Unix シェルの書式 (例えば *
) を使います。
コピー元がリモートサーバでフルパス名 (Unix では /
(スラッシュ) で始まるパス名) を指定しないと、コピー元として指定したものはリモートサーバのホームディレクトリからの相対パスとして解釈されます。
保存先
ファイルを保存する名前か配置するディレクトリです。リモートサーバからローカルに保存する場合、単に現在のディレクトリに置きたい場合があります。そのためには .
を保存先として選択します。例えば:
pscp fred@example.com:/home/tom/.emacs .
でリモートサーバの /home/tom/.emacs
を現在のディレクトリに保存します。
コピー元
パラメータと同様に、保存先がリモートサーバでフルパス名でない場合、リモートサーバのホームディレクトリからの相対パスとして解釈されます。
PSCP は PuTTY ツールのサポートする一般的なコマンドラインオプションすべてに対応しています。ただしファイル転送ツールには無意味なものは除きます。オプションの説明は section 3.11.3 を参照してください。 (PSCP の対応していないものはそのように書かれています。)
PSCP に独自のオプションもいくつか存在します。以下のセクションで PSCP 特有のコマンドラインオプションについて説明します。
-ls
リモートファイルの一覧
-ls
オプションは何もファイルを転送しません。代わりにリモートのファイルを一覧表示します。ホスト名とオプションでリモートファイルの記述のみを与えます。例えば:
pscp -ls fred@example.com:dir1
SCP プロトコル自体にはファイル一覧を行うコマンドがありません。 SCP を使った場合、このオプションはサーバが ls -la
コマンドに応答するものとして実行します。そのためすべてのサーバで動作するとは限りません。
SFTP を使っている場合、このオプションはすべてのサーバで動作するはずです。
-p
ファイルの属性を維持する
デフォルトでは PSCP でコピーしたファイルの更新日時はコピーした時刻になります。 -p
オプションで元ファイルの時刻をコピーに適用します。
-q
無口(quiet), 状態を表示しないデフォルトでは PSCP は転送の進捗をメーターで表示します:
mibs.tar | 168 kB | 84.0 kB/s | ETA: 00:00:13 | 13%
各フィールドの表示は (左から順に) ファイル名、転送済みサイズ (KiB)、転送速度の概算 (KiB/秒)、終了予定の時刻、転送済みの割合です。 -q
オプションで PSCP はこれらの情報を表示しなくなります。
-r
ディレクトリを再帰的にコピーする
デフォルトでは PSCP はファイルのみコピーします。指定したディレクトリとその中身はスキップされます。 -r
オプションで PSCP は指定したディレクトリを走査して内容をコピーします。これによって PSCP でディレクトリ構造全体をマシン間で転送できます。
-batch
対話型プロンプト無効
-batch
オプションを指定すると PSCP は接続の際に対話型プロンプトを表示しません。例えばもしサーバのホスト鍵が無効ならば (section 2.3 参照)、どうするか尋ねずに接続を放棄します。
これは PSCP を自動化したスクリプトで使う場合に役に立ちます。 -batch
を使うと、接続時に何か問題が起きてもバッチジョブが止まる代わりに失敗します。
-sftp
, -scp
特定のファイル転送プロトコルの使用を強制する
Section 5.2.1 で説明したとおり、SSH には 2 つの異なったファイル転送プロトコルがあります。名前に反して PSCP は (他の自称 scp
クライアントと同じように) どちらのプロトコルも使えます。
古い SCP プロトコルは明文化された仕様がなく、詳細がサーバ側に任されています。 ワイルドカードはサーバ側で展開されます。この単純な設計はサーバの対応するワイルドカード仕様は何でも使える (ブレース {}
展開など) ということですが、ファイル名のクオート (例えばファイル名に空白が含まれる場合) などに相互運用性の問題や、section 5.2.1 で述べたセキュリティの問題を引き起こします。
より新しい SFTP プロトコルは、通常 SSH-2 サーバに付属しており、よりプラットフォームに依存しない形で仕様化されています。 (PuTTY の SFTP ワイルドカード文法は section 6.2.2 で説明しています。) これによってプラットフォーム間でより一貫して使え、スクリプトや自動化により適しており、ワイルドカードの一致に関するセキュリティ問題を回避できます。
通常 PSCP は SFTP プロトコルを使おうとして、サーバで SFTP が使えない場合に SCP プロトコルにフォールバックします。
-scp
オプションで PSCP は SCP プロトコルを使おうとし、失敗すると終了します。
-sftp
オプションで PSCP は SFTP プロトコルを使おうとし、失敗すると終了します。このオプションを指定すると PSCP は SFTP サーバをがんばって探すので、SSH-1 でもサーバのセットアップによっては SFTP が使用できます。
訳注: サーバ上の特定のパスをいくつか確認して SFTP のプログラムを探します。
-no-sanitise-stderr
: エラーメッセージのサニタイズを制御する
-no-sanitise-stderr
オプションで PSCP はサーバの標準エラーストリームを、最初に制御文字を除去することなく、受け取った文字通りに出力します。これはサーバが色付けしたエラーメッセージを送っている場合に便利かもしれませんが、同時にサーバはあなたの端末ディスプレイに予期しない影響を与えられるようになります。詳しい説明は section 7.2.3.5 を参照してください。
-limit num
アップロード速度を制限する [Custom]
個々のファイルのアップロードが num
kbps (1 kbps = 毎秒 125 バイト) の値で指定した速度以下になるよう調整します。 num
は 0 以上の整数を指定します。デフォルトは 0 (無制限) です。
ファイル送信中に接続を共有している他の SSH セッションが反応しない場合などに、回線速度より遅い値を指定すると症状が改善するはずです。回線自体を占有してしまう状況にも効果がありますが、その場合はルータ等の QoS 機能を使う方が効果的かもしれません。
制限の対象は入力ファイルの送出速度であり、接続上を流れるデータの量にはよりません。実際にファイル転送で時間当たりに使用される帯域は SSH 等のプロトコルのオーバーヘッドにより指定値を超えることや、あるいはデータ圧縮によってそれ以下になることがあります。
このオプションは -sftp
モード (デフォルト) の時のみ有効です。
PSCP が ERRORLEVEL
として 0 (成功) を返すのはファイルが正しく転送された時だけです。これをバッチファイルでテストするには次のようにします:
pscp file*.* user@hostname:
if errorlevel 1 echo エラーが起きました
PuTTY のように、PSCP もパスワードの代わりに公開鍵認証を行えます。それには 3 種類の方法があります。
第一に、PSCP は PuTTY の保存済みセッションをホスト名の代わりに使えます (section 5.2.1.2 参照)。そのためこのようにできます:
pscp sessionname:file localfile
と入力します。 sessionname
が保存済みセッション名です。
訳注: セッション名の処理は Unicode 化されていないため、環境に依存しない英数字の利用を推奨します。
二つ目として、-i
オプションでコマンドラインから秘密鍵を指定できます。詳しくは section 3.11.3.18 を参照してください。
三つ目として、PSCP は Pageant が実行中ならば Pageant で認証しようとします (chapter 9 参照)。そのためこのようにできます:
公開鍵認証についてのより一般的な情報は chapter 8 を参照してください。
このマニュアルや PuTTY のツールに意見がある場合は、 Feedback page を参照してください。
翻訳についてはフィードバックから送信できます。
©1997-2025 Simon Tatham ©2015-2025 SATO Kentaro
[PuTTY custom build 0.83.ranvis-doc]