SSH Tectia

scpg3

scpg3 — SecureShell ファイル コピー クライアント - Generation 3

書式

scpg3 [options...]
[ src_profile: | [user@] src_host [#port]: ] src_file...
[ dst_profile: | [user@] dst_host [#port]: ] dst_file_or_dir

説明

scpg3 (Windows では scpg3.exe) は、ネットワーク経由でファイルを安全にコピーするために使用します。scpg3 は、SecureShell バージョン 2 プロトコルを使用してセキュアな転送を提供するために ssh-broker-g3 を起動します。認証のためにパスワードまたはパスフレーズが必要な場合は、ssh-broker-g3 がその入力を求めます。scpg3 は、ssh-broker-config.xml ファイルで指定された設定を使用します。

すべてのファイル名に、ホスト、ユーザ、およびポートの指定を [user@] host [#port] の形式で含めることができます。これにより、ファイルをホストにコピーするのか、ホストからコピーされるのかを示すことができます。ユーザ名を指定しない場合は、ローカル ユーザ名が使用されます。ポートを指定しない場合、デフォルトの SecureShell ポートである 22 番が使用されます。代わりに、ssh-broker-config.xml ファイルで定義された接続プロファイル (profile) を指定できます。

scpg3 コマンドで接続プロファイルを定義するときは、SSH Tectia Client による引数の解釈が引数の形式によって変化することに注意してください。指定された属性値に @ 記号が含まれる場合、SSH Tectia Client は常に、その値をプロファイルではなく <username@hostname> であると解釈します。

また、プロファイル名にピリオドが含まれる場合 (host.x.example.com など)、コマンドラインではピリオドをエスケープする必要があります。UNIX では、host\.x\.example\.com と入力します。Windows では、host˜.x˜.example˜.com と入力します。このように入力しないと、プロファイル名がホスト名として解釈され、現在の Windows ユーザ名がログインに使用されます。

2 つのリモート ホスト間のコピーが可能です。リモート ホストでは、sftp-server サブシステムが有効な状態で SecureShell バージョン 2 サーバを実行している必要があります。

セミコロンを使用できるようにするために、必要に応じて host パラメータを角カッコ ([]) で囲むことができます。file 引数には、2 種類の簡単なワイルドカードを含めることができます。アスタリスク (*) は任意の数の任意の文字を表し、疑問符 (?) は任意の 1 文字を表します。

ファイル名に含まれる特殊文字について、詳しくはファイル名のサポート項を参照してください。

オプション

scpg3 のオプションをより詳細に指定するために、以下のコマンドライン パラメータを使用できます。

-a [arg]

アスキー モードを使用してファイルを転送します。このとき、改行は転送と並行して変換されます。z/OS 上の SSH Tectia と他のホストの間の転送については、これによって自動での ASCII-EBCDIC 変換も有効になります。コマンド項 ascii コマンドに関する説明を参照してください。

サーバが改行規則を提示しない場合、-a の後に引数を指定することによってヒントを与えることができます。デフォルトでは転送先の改行規則を設定しますが、転送元の規則を使用する場合は src: を、転送先の規則を使用する場合は dest: をそれぞれ接頭辞として付けることにより、どちらかの規則を指定できます。利用可能な規則は dosunix、および mac で、それぞれ \r\n\n、および \r を改行として使用します。以下にその例を示します。

$ scpg3 -asrc:unix -adest:dos src_host:src_file dest_host:dest_file 
-B, --batch-mode

バッチ モードを使用します。認証時にターミナルでのユーザの対話操作が必要な場合、認証は失敗します。

バッチ モードを使用するには、事前にサーバのホスト鍵をクライアント上に保存し、ユーザ認証の方法として非対話的な方法 (ホスト ベースの認証、パスフレーズを使用しない公開鍵認証など) を設定しておく必要があります。

-b buffer_size_bytes

1 回の読み取り/書き込み要求での最大バッファ サイズを定義します (デフォルトは 32768 バイト)。

-C

現在の接続で圧縮を無効にします。

+C

この接続について zlib 圧縮を有効にします。

-c, --ciphers=LIST

許可された暗号を設定し、サーバに提供します。暗号名のカンマ区切りリストを指定します。たとえば以下のようになります。

--ciphers seed-cbc@ssh.com,aes256-cbc

現在サポートされている暗号名を確認するには、値として help と入力します。

-D, --debug=LEVEL

デバッグ レベルを設定します。LEVEL は 0~99 の数値で、99 はすべてのデバッグ情報を表示することを指定します。これはコマンドラインの最初の引数にしてください。

[注意]注意

オプション -D は UNIX のみに適用されます。Windows では、このコマンドライン ツールの代わりに Connection Broker のデバッグ オプション -D, -l を使用します。

[注意]注意

デバッグ レベルを設定できるのは、scpg3 コマンドが Connection Broker を起動するときだけです。Connection Broker がすでに実行されている場合、このオプションの効果はありません。

-d

転送先を強制的にディレクトリにします。

-I, --interactive

既存の転送先ファイルを上書きするかどうかをユーザに確認します (-B と同時には使用できません)。

-i FILE

identification ファイルに定義された秘密鍵を公開鍵認証に使用することを定義します。

-K, --identity-key-file=FILE

指定した秘密鍵の鍵ファイルまたは証明書をユーザ認証に使用することを定義します。鍵ファイルへのパスはコマンドで指定します。

ファイルが秘密鍵である場合は、その鍵が読み取られ、Connection Broker のキー ストアですでに認識されている鍵と比較されます。鍵が既知のものでない場合は、復号化されてキー ストアに一時的に追加されます。ファイルが証明書であり、一致する秘密鍵が Connection Broker にとって既知の場合は、その鍵が使用されます。コマンドラインで複数の -K オプションを使用することで、証明書と秘密鍵の両方を指定できます。

-m fileperm [:dirperm]

このオプションは UNIX でのみ使用できます。UNIX サーバへのアップロードについて、ファイルとディレクトリのデフォルトの許可ビットを設定します。

-N max_requests

読み取り/書き込み要求の最大同時送信数を定義します (デフォルトは 10)。

-O, --offset= r<offset> | w<offset> | l<length> | t<length>

オフセットを設定します。オフセット r<offset> は、転送元ファイル内の開始オフセットを指定します。オフセット w<offset> は、転送先ファイル内の開始オフセットを指定します。長さ l<length> は、コピーするデータの量を指定します。切り捨ての長さ t<length> (省略可能) は、ファイル データのコピー後に転送先ファイルをこのサイズに縮小または伸長することを指定します。

-P port

リモート マシン上のこの SecureShell ポートに接続します (デフォルトは 22)。

-p

転送元と転送先の両方が UNIX ファイルシステム (z/OS USS を含む) の場合に、ファイルの許可属性とタイムスタンプを保持します。転送元と転送先のいずれかが Windows の場合、タイムスタンプは保持しますが許可属性は保持しません。転送先が z/OS MVS の場合は、どちらも保持しません。

-Q

進行状況インジケータを表示しません。

-r

サブディレクトリを再帰処理します。

-u, --unlink-source

コピー後に転送元ファイルを削除します (ファイル移動)。

-v, --verbose

詳細モードを使用します (-D 2 と同じ)。

-W, --whole-file

インクリメンタル チェックを試行しません。デフォルトでは (このオプションを指定しない場合)、インクリメンタル チェックが試行されます。このオプションは --checksum オプションとの組み合わせでのみ使用できます。

+w, --try-empty-password

空のパスワードを試行します。

--allowed-authentications=METHODS

ユーザ認証で使用を許可する認証方法を定義します。方法のカンマ区切りリストを指定します。現在サポートされている認証方法を確認するには、値として help と入力します。

--append

転送先ファイルの末尾にデータを追記します。

--binary

バイナリ転送モードを使用します。サーバが SSH Tectia Server for IBM z/OS の場合、サーバは ASCII から EBCDIC への変換を実行しないように要求され、ファイルはストリーム形式を使用して転送されます。--src-site および --dst-site オプションを使用して値を変更できます。

--checkpoint=b <bytes>

チェックポイント更新が発生するまでのバイト間隔 (デフォルトは 10 MB)。このオプションは --checksum=checkpoint のときにのみ使用できます。

--checkpoint=s <seconds>

チェックポイント更新が発生するまでの時間間隔 (デフォルトは 10 秒)。このオプションは --checksum=checkpoint のときにのみ使用できます。

--checksum [ =yes | no | md5 | sha1 | md5-force | sha1-force | checkpoint ]

ファイル転送を再開できるファイル内のポイントを特定するために、MD5 または SHA-1 チェックサム、あるいは独立したチェックポイント データベースを使用します。buffer_size_bytes よりもサイズが小さいファイルはチェックされません。サイズの小さいファイルに対しては md5-force または sha1-force を使用します (デフォルトは yes で、FIPS モードでは SHA チェックサムを、それ以外の場合は MD5 チェックサムを使用します)。チェックポイント設定は、サイズの大きなファイルを 1 つずつ転送するときに使用します。

--compressions=METHODS

許可された圧縮方法を設定し、サーバに提供します。方法のカンマ区切りリストを指定します。

現在サポートされている圧縮方法名を確認するには、値として help と入力します。

--dst-site=PARAM

転送先ファイルに対して、指定されたサイト パラメータを使用します。コマンド項 site コマンドに関する説明を参照してください。

--exclusive

接続試行の度に新しい接続を開くことを定義します。このオプションを指定しない場合、Connection Broker は最近閉じられた接続を再利用できます。

--fips

FIPS 暗号化ライブラリを使用してチェックサムを実行します。

--force-lower-case

転送先ファイル名を小文字に変換します。

--identity=ID

ユーザ認証に秘密鍵の ID が使用されることを定義します。ID は Connection Broker 内部の 10 進の鍵番号、鍵ハッシュ、鍵ファイル名のいずれかです。

--identity-key-hash=ID

対応する公開鍵ハッシュとともにユーザ認証に使用する秘密鍵を定義します。

--identity-key-id=ID

Connection Broker 内部の 10 進の鍵番号をユーザ認証で使用することを定義します。

--keep-alive=VALUE

SecureShell サーバにキープアライブ メッセージ (非操作パッケージ) を送信する頻度を定義します。値は秒単位で入力します。デフォルト値は 0 で、この場合、キープアライブ メッセージは無効になります。

--macs=LIST

許可された MAC を設定し、サーバに提供します。MAC 名のカンマ区切りリストを指定します。たとえば以下のようになります。

--mac hmac-sha1-96,hmac-md5,hmac-md5-96

現在サポートされている MAC 名を確認するには、値として help と入力します。

--overwrite [ =yes | no ]

既存の転送先ファイルを上書きするかどうかを選択します (デフォルトは yes)。

--password= PASSWORD | file://PASSWORDFILE | extprog://PROGRAM

クライアントがパスワード認証への応答として送信するユーザ パスワードを設定します。PASSWORD はこのオプションへの引数として直接渡すことができます (ただし、推奨されません)。パスワードが保存されたファイルのパスを入力することも、パスワードを出力するプログラムまたはスクリプトのパスを入力することもできます。

[警告]警告

コマンドラインでパスワードを指定するのはセキュアな方法ではありません。たとえば、マルチユーザ環境では、コマンドライン上で直接渡されたパスワードをプロセス テーブルから簡単に復元できます。よりセキュアな認証方法を使用することをお勧めします。非対話的なバッチ ジョブでは、パスフレーズを使用しない公開鍵認証、またはホストベースの認証を使用するほうがより安全です。少なくとも、ファイルまたはプログラムを使ってパスワードを渡すようにしてください。

--plugin-path=PATH

プラグインのパスを PATH に設定します。これは FIPS モードでのみ使用されます。

--prefix=PREFIX

ファイル転送の間に、ファイル名に接頭辞を追加します。ファイルが正常に転送された後で接頭辞は削除されます。

--src-site=PARAM

転送元ファイルに対して、指定されたサイト パラメータを使用します。コマンド項 site コマンドに関する説明を参照してください。

--statistics [ =no | yes | simple | bytes ]

ファイル転送操作の後で表示する統計の形式を選択します (デフォルトは no)。各オプションの意味は以下の通りです。

no - 統計を作成しません。

yes - 詳細な統計を作成します。statistics-format オプションで内容を設定できます。デフォルトの統計内容は以下の通りです。

"Source: %c:%g\r\n"
"Source parameters: %e\r\n"
"Destination: %C:%G\r\n"
"Destination parameters: %E\r\n"
"File size: %s bytes\r\n"
"Transferred: %t bytes\r\n"
"Rate: %RB/s\r\n"
"Start: %xy-%xt-%xd %xh:%xm:%xs\r\n"
"Stop: %Xy-%Xt-%Xd %Xh:%Xm:%Xs\r\n"
"Time: %y\r\n"

simple - 簡潔な 1 行の統計を作成します。statistics-format オプションで内容を設定できます。デフォルトの統計内容は以下の通りです。

"Transferred %t bytes, file: '%f' -> '%F'\r\n"

bytes - 転送済みバイト数を報告する基本的な統計を作成します。statistics-format オプションで内容を設定できます。デフォルトの統計内容は以下の通りです。

"Transferred %t bytes, file: '%f' -> '%F'\r\n"
--statistics-format=FORMAT STRING

統計の形式と内容を選択します。このオプションは --statistics=yes|simple|bytes のときに使用します。以下の定義を使用して、統計の内容を選択します。

%c  - source connection: user@host#port or profile
%g  - /path/to/source/file
%f  - source file name
%e  - source parameters (file transfer and dataset parameters)
%C  - destination connection: user@host#port or profile
%G  - /path/to/destination/file
%F  - destination file name
%E  - destination parameters (file transfer and dataset parameters)
%s  - file size in bytes
%S  - file size as "XXyB" (B, kiB, MiB or GiB)
%t  - transfer size in bytes
%T  - transfer size as "XXyB" (B, kiB, MiB or GiB)
%p  - transfer percentage
%q  - transfer rate in bit/s
%Q  - transfer rate as "XXyb/s" (b/s, kib/s, Mib/s, Gib/s)
%r  - transfer rate in bytes/s
%R  - transfer rate as "XXyB/s" (B/s, kiB/s, MiB/s, GiB/s)
%D* - current date
%x* - start date
%X* - end date
%y  - elapsed time
%Y  - time remaining
%z  - ETA or TOC, if transfer has finished
%Z  - string "ETA" or "TOC", if transfer has finished

Where * is one of the following:

h - hours (00-23)
m - minutes (00-59)
s - seconds (00-59)
f - milliseconds (0-999)
d - day of the month (1-31)
t - month (1-12)
y - year (1970-)

Other special characters in format strings are:

\n - line feed
\r - carriage return
\t - horizontal tab
\\ - backslash

--streaming [ =yes | no | force | ext ]

ファイル転送でストリーミングを使用します (サーバでサポートされている場合)。buffer_size_bytes よりもサイズが小さいファイルについては、ストリーミングを使用した転送を行いません。サイズの小さいファイルに対しては force を使用してください。デフォルトは no です。

z/OS ホストで MVS データセットへの直接アクセスを有効にするには、ext を使用します。他の環境ではサイズの小さいファイルの転送が低速になる可能性があるため、このオプションは、ファイル転送が主としてメインフレームのデータセット転送に使用されるときにのみ使用してください。

チェックサムが計算される場合、ファイル転送ではステージングが使用され、ストリーミングは使用されないため、--streaming=ext オプションを指定する場合は --checksum=no オプションも指定する必要があります。

拡張ストリーミングを有効にする別の方法は、環境変数として SSH_SFTP_STREAMING_MODE=ext および SSH_SFTP_CHECKSUM_MODE=no を定義することです。

--tcp-connect-timeout=VALUE

SecureShell サーバへの TCP 接続を確立するときのタイムアウト時間を秒単位で定義します。タイムアウト値は正の数で入力します。値を 0 に設定するとこの機能は無効になり、代わりにデフォルトのシステム TCP タイムアウト設定が使用されます。

--sunique

ファイルを一意の名前で保存します。転送されるファイルのうち 2 つ以上が同じ名前である場合、この機能により、重複したファイル名の末尾に連続する番号が付加されます。たとえば、file.namefile.name1file.name2 のようになります。

-V, --version

プログラムのバージョンを表示して終了します。

-h, --help, -?

コマンドライン オプションの簡単な概要を表示して終了します。

ファイル名のサポート

ファイル名に使用できる文字セットはオペレーティング システムによって異なります。UNIX ではいくつかの特殊文字をファイル名に使用できますが、Windows では以下の文字は使用できません。

\/ : * ? " < > |

名前に特殊文字が含まれるファイル (unixfilename*?".txt など) を、scpg3 コマンドを使って UNIX サーバから Windows にコピーするときは、Windows で使用できる新しい名前をファイルに付ける必要があります。以下の形式でコマンドを入力します。

$ scpg3 user@unixserver:"unixfilename~*~?\".txt" windowsfilename.txt

原則として、特殊文字を含むファイル名を scpg3 コマンドの引数として入力するときは、プラットフォーム固有の構文に従う必要があります。

SSH Tectia は、アスキー文字のみで構成されるファイル名を完全にサポートします。他の文字セットに属する文字を含んだファイル名は、正しく機能することが保証されていません。

ワイルドカードの使用

scpg3 コマンドは、ワイルドカードとして * および ? をサポートします。

リモート側でもローカル側でも、コマンド内でワイルドカードを使用できます。次の例のコマンドは、ディレクトリ dir2 の直下にあり、名前が接頭辞 data- で始まるすべてのサブディレクトリ内のすべてのテキスト ファイル (*.txt) を、現在のローカル ディレクトリ (.) にコピーします。

$ scpg3 -r user@server:"dir2/data-*/*.txt" .

UNIX では、文字 * および ? がファイル名にも出現する可能性があることに注意してください。したがって、ワイルドカードと、ファイル名を構成する文字を区別するためにエスケープ文字を使用する必要があります。詳細については、特殊文字のエスケープ項を参照してください。

特殊文字のエスケープ

あるオペレーティング システムのファイル名で使用できる特殊文字が、SSH Tectia のコマンドで特別な意味を持つ場合があります。また、ファイル転送システムの各部で意味が異なる可能性もあります。

以下の文字は特別な意味を持つため、scpg3 コマンドでは、ファイル名を引数に取るコマンドでこれらの文字をエスケープする必要があります。

* (アスタリスク) は任意の数の任意の文字に対応するワイルドカードです。

? (疑問符) は任意の 1 文字に対応するワイルドカードです。

表示通りに扱う文字列は "" (引用符) で囲みます。

\ (バックスラッシュ) は UNIX でのエスケープ文字です。

~ (チルダ) は Windows でのエスケープ文字です。

エスケープ文字は、その直後の文字を表示通りに扱い、その文字の特別な意味を考慮しないように scpg3 コマンドに指示します。エスケープ文字はローカル マシンのオペレーティング システムに従って選択されます。

文字 \ および ~ はそれら自体が特殊文字であり、ファイル名でこれらの文字を使用する場合はその直前にエスケープ文字を入れる必要があります。したがって、\ (UNIX) または ~ (Windows) の各文字を含むファイル名を scpg3 コマンドに入力するときは、以下のように、必要なエスケープ文字を各文字に追加してください。

\\ (UNIX)

~~ (Windows)

SSH Tectia の scpg3 コマンドでのエスケープ文字の使用方法と、異なるオペレーティング システムで特殊文字を含むファイル名を入力する方法については、以下の例を参照してください。

scpg3 コマンドでのファイル名の例を以下に示します。

以下のファイル名は UNIX で有効ですが、コマンドに入力するときはエスケープ文字が必要です。

file|name.txt 
file-"name".txt 
file?name.txt 
file*name.txt 
file\name.txt 
file - name.txt 
file~name.txt 

UNIX で scpg3 コマンドを使用するとき、エスケープ文字が互いにエスケープし合うという理由から、複数のエスケープ文字が必要な場合があります。前述のファイル名は以下の形式で入力します。

file\|name.txt     or  "file|name.txt" 
file-\"name\".txt 
file\\\?name.txt   or  "file\?name.txt" 
file\\\*name.txt   or  "file\*name.txt" 
file\\\\name.txt   or  "file\\\name.txt" 
file\ -\ name.txt  or  "file - name.txt" 
file~name.txt 

UNIX でのコマンドの例を以下に示します。

$ scpg3 user@server:file\\\*name.txt . 
$ scpg3 user@server:file\ -\ name.txt . 

Windows で scpg3 コマンドを使用するとき、前述の UNIX のファイル名は以下の形式で入力します。

"file|name.txt"
file-\"name\".txt     (Note that Windows requires \ to escape the " character)
"file~?name.txt"
"file~*name.txt"
file~\name.txt
"file - name.txt"
file~~name.txt

ここでは、引用符を除いた文字列を scpg3 コマンドがパラメータとして受け取れるように、オペレーティング システムによって引用符 ("") が解釈されます。

Windows でのコマンドの例を以下に示します。

> scpg3 user@server:"file~*name.txt" filename.txt 
> scpg3 user@server:"file - name.txt" . 

環境変数

scpg3 は以下の環境変数を使用します。

SSH_SFTP_CHECKSUM_MODE=no|md5|md5-force|sha1|sha1-force|checkpoint

sftpg3 および scpg3 コマンドのデフォルトのチェックサム モードを定義します。チェックサムは、ファイル転送が中断された場合に、そのファイル転送をファイル内のどこで再開できるかを特定するために使用します。

no - チェックサムを使用しません。ファイルは常に先頭から EOF まで転送されます。これにより、z/OS ではステージングが行われなくなります。

md5 - MD5 チェックサムを使用します。

md5-force - MD5 チェックサムを強制します。

sha1 - SHA1 チェックサムを使用します。

sha1-force - SHA1 チェックサムを強制します。

checkpoint - 独立したチェックポイント データベースを使用します。

SSH_SFTP_OVERWRITE=yes|no

この変数を yes (デフォルト) に設定すると、デフォルトの動作は既存のファイルの上書きです。no に設定すると、デフォルトの動作は既存のファイルの上書きではありません。

SSH_SFTP_STREAMING_MODE=yes|no|ext

sftpg3 および scpg3 コマンドで使用するデフォルトのストリーミング モードを定義します。

no - ストリーミングを使用しません。

yes - 標準のストリーミングを使用します。

ext - 拡張ストリーミングを使用します。

exit 値

scpg3 は、操作の成否に基づいて以下の値を返します。

0     Operation was successful. 
1     Internal error. 
2     Connection aborted by the user.
3     Destination is not a directory, but a directory was specified by the user. 
4     Connecting to the host failed. 
5     Connection lost. 
6     File does not exist. 
7     No permission to access file. 
11    Some non-fatal errors occured during a directory operation.
101   Wrong command-line arguments specified by the user. 

ローカル システムからリモートの UNIX システムにファイルをコピーします。

$ scpg3 localfile user@remotehost:/dst/dir/ 

ローカル システムからリモートの Windows システムにファイルをコピーします。

$ scpg3 localfile user@remotehost:/C:/dst/dir/ 

リモート システムからローカル ディスクにファイルをコピーします。

$ scpg3 user@remotehost:/src/dir/srcfile /dst/dir/dstfile 

あるリモート システムから別のリモート システムに、ssh-broker-config.xml ファイルで定義された接続プロファイルを使用してファイルをコピーします。

$ scpg3 profile1:/src/dir/srcfile profile2:/dst/dir/dstfile