sshg3 — SecureShell ターミナル クライアント - Generation 3
sshg3 (Windows ではsshg3.exe) は、リモート マシンにログインし、リモート マシン上でコマンドを実行するためのプログラムです。sshg3 は、セキュリティ保護されていないネットワーク上の 2 つのホスト間にセキュアな暗号化通信チャネルを提供します。セキュアでない rlogin、rsh、telnet の各プログラムの代わりにこのプログラムを使用できます。また、sshg3 を使用することで、セキュアなチャネルを介して X11 接続および任意の TCP/IP ポートを転送できます。
sshg3 を使用してリモート ホストに接続するには、ssh-broker-config.xml
ファイルで定義された接続プロファイル (profile
) の名前、あるいはリモート ホストの IP アドレスまたは DNS 名のどちらかを指定します。リモートのユーザ名と SecureShell サーバのポート ([user@]host[#port]
) もオプションで指定できます。ユーザ名を指定しない場合は、ローカル ユーザ名が使用されます。ポートを指定しない場合、デフォルトの SecureShell ポートである 22 番が使用されます。リモート ホストでは SecureShell サーバ バージョン 2 を実行している必要があります。
sshg3 は Connection Broker クライアントとして機能し、実際の Connection Broker プロセスである ssh-broker-g3 をトランスポートとして (オンデマンド実行モードで) 起動するか、またはすでに実行中の Connection Broker プロセスを使用します。認証にパスワードまたはパスフレーズが必要な場合、Connection Broker はユーザにその入力を求めます。Connection Broker は、ssh-broker-config.xml
ファイルで指定された設定を使用します。
サーバでユーザのIDが確認されると、サーバは指定されたコマンドを実行するか、またはマシンにログインして通常のシェルをユーザに提示します。リモートのコマンドまたはシェルとのすべての通信は自動的に暗号化されます。
疑似 tty が割り当てられていない場合、セッションは透過的であり、バイナリ データを安全に転送するために使用できます。
リモート マシン上でコマンドまたはシェルが終了し、すべての X11 および TCP/IP 接続が閉じられると、セッションは終了します。リモート プログラムの終了状態は sshg3 の終了状態として返されます。
ssh-broker-g3 は認証エージェントとして機能し、ssh-broker-config.xml
ファイルまたは sshg3 コマンドライン (-a
オプション) で無効になっていない限り、エージェントへの接続は自動的にリモート側に転送されます。
ユーザが X11 を使用している (DISPLAY
環境変数が設定されている) 場合、X11 ディスプレイへの接続は自動的にリモート側に転送されます。このとき、シェル (コマンド) から起動された X11 プログラムはすべて暗号化チャネルを通過し、実際の X サーバへの接続はローカル マシンから行われます。ユーザは手動で DISPLAY
を設定しないでください。X11 接続の転送は、ssh-broker-config.xml
ファイルまたは sshg3 コマンドライン (+x
オプション) で有効にできます。デフォルトでは、X11 転送は無効です。
sshg3 によって設定される DISPLAY
の値はサーバ マシンを指しますが、ディスプレイ番号は 0 より大きくなります。これは正常であり、暗号化チャネルを介して接続を転送するための「プロキシ」X サーバを sshg3 がサーバ マシン上に作成することが理由で発生します。
sshg3 は、サーバ マシン上の Xauthority データのセットアップも自動的に行います。この目的のために、ランダムな認証 Cookie を生成し、サーバ上の Xauthority データにその Cookie を格納し、転送されるすべての接続がこの Cookie を搬送することを検証し、接続が開かれるときにそれを実際の Cookie で置き換えます。実際の認証 Cookie がサーバ マシンに送信されることは決してありません (また、Cookie がプレーンな状態で送信されることも一切ありません)。
コマンドラインと ssh-broker-config.xml
ファイルで同じオプションが設定されている場合、コマンドライン オプションのほうが優先されます。以下のオプションが利用可能です。
-a, --no-agent-forwarding
認証エージェント転送を無効にします。これはデフォルト値です。
+a
認証エージェント転送を有効にします。
-B, --batch-mode
バッチ モードを使用します。認証時にターミナルでのユーザの対話操作が必要な場合、認証は失敗します。
バッチ モードを使用するには、事前にサーバのホスト鍵をクライアント上に保存し、ユーザ認証の方法として非対話的な方法 (ホスト ベースの認証、パスフレーズを使用しない公開鍵認証など) を設定しておく必要があります。
-C
現在の接続で圧縮を無効にします。
+C
この接続について zlib 圧縮を有効にします。
-c, --ciphers=
LIST
許可された暗号を設定し、サーバに提供します。暗号名のカンマ区切りリストを指定します。たとえば以下のようになります。
--ciphers seed-cbc@ssh.com,aes256-cbc
現在サポートされている暗号名を確認するには、値として help
と入力します。
-D, --debug=
LEVEL
デバッグ レベルを設定します。LEVEL
は 0~99 の数値で、99 はすべてのデバッグ情報を表示することを指定します。これはコマンドラインの最初の引数にしてください。
注意 | |
---|---|
オプション |
注意 | |
---|---|
デバッグ レベルを設定できるのは、sshg3 コマンドが Connection Broker を起動するときだけです。Connection Broker がすでに実行されている場合、このオプションの効果はありません。 |
-e, --escape-char=
CHAR
エスケープ文字を設定します (設定しない場合は無効、デフォルトは ~
)。
-f, --fork-into-background
認証後にバックグラウンド モードに分岐します (UNIX のみ)。このオプションはトンネルおよびリモート コマンドで使用します。コマンドが指定されない場合は、-S
オプションの意味も含みます。トンネルが指定されている場合、このオプションにより sshg3 は接続を無期限に待機できるようバックグラウンドで動作します。接続の待機を停止するには sshg3 を強制終了する必要があります。
-g, --gateway
ポートをゲートウェイ化します。これは、ローカルで転送されるポートに他のホストも接続できることを意味します。このオプションは「-L
」オプションよりも先に指定する必要があります。このオプションでの +
および -
のロジックに注意してください。
+g
ポートをゲートウェイ化しません。localhost のみを起点とするトンネリング接続をリッスンします。これはデフォルト値です。このオプションでの +
および -
のロジックに注意してください。
-i
FILE
identification ファイルに定義された秘密鍵を公開鍵認証に使用することを定義します。
-K, --identity-key-file=
FILE
指定した秘密鍵の鍵ファイルまたは証明書をユーザ認証に使用することを定義します。鍵ファイルへのパスはコマンドで指定します。
ファイルが秘密鍵である場合は、その鍵が読み取られ、Connection Broker のキー ストアですでに認識されている鍵と比較されます。鍵が既知のものでない場合は、復号化されてキー ストアに一時的に追加されます。ファイルが証明書であり、一致する秘密鍵が Connection Broker にとって既知の場合は、その鍵が使用されます。コマンドラインで複数の -K
オプションを使用することで、証明書と秘密鍵の両方を指定できます。
-L, --localfwd
[protocol/
] [listen-address:
] listen-port:dst-host:dst-port
ローカル (クライアント) ホスト上のポートをリモートの接続先ホストおよびポートに転送します。
これはローカル クライアント上のリスナー ポート (listen-port
) を割り当てます。このリスナーに接続を作成すると、リモート サーバに対する接続が SecureShell を通してトンネルされ、サーバから指定された接続先ホストおよびポート (dst-host:dst-port
) への接続が作成されます。サーバから先の接続は、通常の TCP 接続であるためセキュアではありません。
引数 protocol
を指定すると、プロトコル固有の転送が有効になります。実装されるプロトコルは tcp
(デフォルト、特別な処理なし)、ftp
(FTP データ チャネルに対して一時的な転送が作成され、FTP セッション全体を実質的にセキュリティ保護する)、および socks
です。
socks
プロトコルの場合、引数の構文は「-L
socks/[listen-address:]listen-port
」です。これを設定すると、SSH Tectia Client または ConnectSecure は他のアプリケーションに対して SOCKS サーバとして機能し、SOCKS トランザクションによる要求に従って転送を作成します。これは SOCKS4 と SOCKS5 の両方をサポートします。
listen-address
を指定した場合、クライアント上でそのインターフェイスのみがリッスンされます。省略した場合、すべてのインターフェイスがリッスンされます。
-l, --user=
USERNAME
このユーザ名を使用してログインします。
-m, --macs=
LIST
許可された MAC を設定し、サーバに提供します。MAC 名のカンマ区切りリストを指定します。たとえば以下のようになります。
--mac hmac-sha1-96,hmac-md5,hmac-md5-96
現在サポートされている MAC 名を確認するには、値として help
と入力します。
-o
option
SSH Tectia Client 4.x 形式の設定ファイルから読み取られたと想定してオプションを処理します。サポートされているオプションは ForwardX11
、ForwardAgent
、および AllowedAuthentications
です。たとえば、-o "ForwardX11=yes"
のようにします。
-P --password=
PASSWORD
| file://
PASSWORDFILE
| extprog://
PROGRAM
クライアントがパスワード認証への応答として送信するユーザ パスワードを設定します。PASSWORD
はこのオプションへの引数として直接渡すことができます (ただし、推奨されません)。パスワードが保存されたファイルのパスを指定することも、パスワードを出力するプログラムまたはスクリプトのパスを指定することもできます。
警告 | |
---|---|
コマンドラインでパスワードを指定するのはセキュアな方法ではありません。たとえば、マルチユーザ環境では、コマンドライン上で直接渡されたパスワードをプロセス テーブルから簡単に復元できます。よりセキュアな認証方法を使用することをお勧めします。非対話的なバッチ ジョブでは、パスフレーズを使用しない公開鍵認証、またはホストベースの認証を使用するほうがより安全です。少なくとも、ファイルまたはプログラムを使ってパスワードを渡すようにしてください。 |
-p, --port=
PORT
リモート ホスト上のこのポートに接続します。SecureShell サーバが同じポートで接続をリッスンしている必要があります。
-q
抑制モード。致命的エラーのみを出力します。
-R, --remotefwd
[protocol/
] [listen-address:
] listen-port:dst-host:dst-port
リモート (サーバ) ホスト上のポートをローカル側の接続先ホストおよびポートに転送します。
これはリモート サーバ上のリスナー ポート (listen-port
) を割り当てます。このリスナーに接続を作成すると、ローカル クライアントに対する接続が SecureShell を通してトンネルされ、クライアントから指定された接続先ホストおよびポート (dst-host:dst-port
) へのもう 1 つの接続が作成されます。クライアントから先の接続は、通常の TCP 接続であるためセキュアではありません。
引数 protocol
を指定すると、プロトコル固有の転送が有効になります。実装されるプロトコルは tcp
(デフォルト、特別な処理なし) および ftp
(FTP データ チャネルに対して一時的な転送が作成され、FTP セッション全体を実質的にセキュリティ保護する) です。
listen-address
を指定した場合、サーバ上のそのインターフェイスのみがリッスンされます。省略した場合、すべてのインターフェイスがリッスンされます。
-S, --no-session-channel
セッション チャネルを要求しません。セッション チャネル (および tty) が必要でないか、またはサーバがそれを提供しない場合は、このオプションをポート転送要求で使用できます。
+S
セッション チャネルを要求します。これはデフォルト値です。
-s, --subsystem
実行されるコマンドを、シェルの実行可能ファイルではなくサブシステムに設定します。
-t, --tty
コマンドが渡される場合でも tty を割り当てます。
-v, --verbose
詳細モードを使用します。接続に失敗した場合に、より多くの情報またはエラー診断が出力されます。
-w
空のパスワードを試行しません。
+w, --try-empty-password
空のパスワードを試行します。
-X, -x, --no-x11-forwarding
X11 接続転送を無効にします。これはデフォルト値です。
+X, +x
X11 接続転送を有効にします。
-z, --broker-log-file=
FILE
Connection Broker ログ ファイルを FILE
に設定します。このオプションは、ssh-broker-g3 がこのプロセスによって起動される場合にのみ機能します。
--abort-on-failing-tunnel
トンネル リスナーの作成が失敗した場合 (ポートがすでに予約されている場合など) は中止します。
--allowed-authentications=
METHODS
ユーザ認証で使用を許可する認証方法を定義します。方法のカンマ区切りリストを指定します。現在サポートされている認証方法を確認するには、値として help
と入力します。
--compressions=
METHODS
許可された圧縮方法を設定し、サーバに提供します。方法のカンマ区切りリストを指定します。
現在サポートされている圧縮方法名を確認するには、値として help
と入力します。
--exclusive
接続試行の度に新しい接続を開くことを定義します。このオプションを指定しない場合、Connection Broker は最近閉じられた接続を再利用できます。
--identity
ID
ユーザ認証に秘密鍵の ID が使用されることを定義します。ID は Connection Broker 内部の 10 進の鍵番号、鍵ハッシュ、鍵ファイル名のいずれかです。
--identity-key-hash
ID
対応する公開鍵ハッシュとともにユーザ認証に使用する秘密鍵を定義します。
--identity-key-id
ID
Connection Broker 内部の 10 進の鍵番号をユーザ認証で使用することを定義します。
--keep-alive=
VALUE
SecureShell サーバにキープアライブ メッセージを送信する頻度を定義します。値は秒単位で入力します。デフォルト値は 0 で、この場合、キープアライブ メッセージは無効になります。
--remote-environment name=
VALUE
このオプションを使用すると、定義された環境変数がクライアント側からサーバに渡されます。環境変数はコマンド、シェル、またはサブシステムを要求するときにサーバ上で適用されます。
サーバで環境変数の設定を制限できることに注意してください。
ssh-broker-config.xml
設定ファイルに、default-settings
およびプロファイルごとの <remote-environment>
エレメントを設定することによって、環境変数をサーバに渡すこともできます。remote-environmentを参照してください。
コマンドライン クライアントで入力したものと同じ変数が ssh-broker-config.xml
でも設定されている場合は、コマンドラインで入力した値が使用されます。
--remote-environment-format name=
VALUE
定義された環境変数がクライアント側からサーバに渡されます。Connection Broker は、サーバに値を送信する前にその値を処理します。
value
に %U
を使用して、ユーザ名を示すことができます。Connection Broker は %U
を実際のユーザ名に置き換えてから、サーバに送信します。
詳細については、前の --remote-environment
オプションの説明を参照してください。
--tcp-connect-timeout=
VALUE
SecureShell サーバへの TCP 接続を確立するときのタイムアウト時間を秒単位で定義します。値は正の数で入力します。
-V, --version
プログラムのバージョンを表示して終了します。
-h, --help
コマンドライン オプションの簡単な概要を表示して終了します。
以下のいずれかのコマンドを指定できます。
remote_command
[arguments] ...
リモート ホスト上でコマンドを実行します。
-s
service
リモート サーバでサービスを有効にします。
sshg3 は、実行中のセッションを管理するためのエスケープ シーケンスをサポートします。エスケープ シーケンスを有効にするには、改行文字の直後に入力する必要があります (最初に Enter キーを押します)。入力中、エスケープ シーケンスは画面上に表示されません。
以下のエスケープ シーケンスがサポートされています。
接続を終了します。
Ctrl
-Zセッションを一時停止します。
エスケープ文字をその文字として送信します。
転送される接続を一覧表示します。
エスケープ文字を不可逆的に無効にします。
エスケープ シーケンスの要約を表示します。
鍵の変更を手動で開始します。
接続統計を表示します。これにはサーバとクライアントのバージョン、受信パケット数、送信パケット数、圧縮、鍵交換アルゴリズム、公開鍵アルゴリズム、および対称暗号が含まれます。
個別チャネルの統計 (データ ウィンドウのサイズなど) を表示します。これはデバッグ目的に使用します。
クライアントのバージョン番号を stderr に出力します (トラブルシューティングに役立ちます)。
接続時に、sshg3 によって使用可能ないくつかの環境変数が SecureShell サーバによって自動的に設定されます。どの変数が設定されるかは SecureShell サーバによって異なります。sshg3 によって使用可能な変数は以下の通りです。
DISPLAY
DISPLAY
変数は X11 サーバの場所を示します。これはサーバによって自動的に設定され、hostname:n
の形式を取ります。ここで hostname
は、サーバおよびシェルが実行されるホストを指します。 n
は 1 以上の整数です。sshg3 はこの特殊な値を使用して、X11 接続をセキュアなチャネルに転送します。
ユーザが DISPLAY
を明示的に設定すると、X11 接続がセキュアでなくなる (かつ、必要な認証 Cookie をユーザがすべて手動でコピーしなければならなくなる) ため、通常はこのような設定を行わないでください。
HOME
ユーザのホーム ディレクトリ。
LOGNAME
USER
と同義であり、この変数を使用するシステムとの互換性のために設定されます。
MAIL
ユーザのメールボックス。
PATH
オペレーティング システムにより異なりますが、一部のシステムではデフォルトのパスに設定されます。たとえば /etc/environment
または /etc/default/login
が使用されます。
SSH_SOCKS_SERVER
sshg3 によって使用される SOCKS サーバのアドレス。
SSH2_AUTH_SOCK
存在する場合は、認証エージェントまたはローカルでそれにあたるものと通信を行うために使用される UNIX ドメイン ソケットのパスを示すために使用されます。
SSH2_CLIENT
接続のクライアント エンドを指定します。この変数では、クライアントの IP アドレス、クライアントのポート番号、およびサーバのポート番号の、スペースで区切られた 3 つの値が記載されます。
SSH2_ORIGINAL_COMMAND
強制コマンドが実行されている場合、これが sshg3 に与えられた元のコマンドになります。このコマンドは、他方からの引数を取得する目的などで使用されます。必ずしも実際のコマンドである必要はなく、ファイル、デバイス、パラメータなどの名前を指定することができます。
SSH2_TTY
現在のシェルまたはコマンドに関連付けられたデバイスへのパスである tty の名前に設定されます。現在のセッションに tty がない場合、変数は設定されません。
TZ
サーバの起動時に設定されている場合、タイムゾーンの値を設定して現在のタイムゾーンを表示します。サーバはこの値を新しい接続に対して渡します。
USER
ユーザの名前。
SSH Tectia Server によって設定される変数の一覧については、ssh-server-g3(8) の man ページを参照してください。
実行に成功すると、sshg3 は通常、exit 値として 0
を返します。sshg3 でエラーが発生した場合、通常はエラー メッセージに理由が示されます。この場合の exit 値は 1
になります。
リモート コマンドを実行するとき、sshg3 は実行したコマンドの終了値を返して終了します。実行に成功した場合、これは通常 0
です。要求したリモート コマンドが見つからない場合、通常はシェルによってエラー コード 127
が返されます。
ホスト remotehost
の 2222 番ポートにローカルのユーザ名で接続し、シェルを開きます。
$ sshg3 remotehost#2222
ssh-broker-config.xml
ファイルの接続プロファイル profile1
で指定されたホストに接続し、who
コマンドを実行します (そして、コマンドの実行後に終了します)。
$ sshg3 profile1 who
ホスト remotehost
に user
として接続し、クライアント上のポート 143 から imapserver
上のポート 143 へのローカル ポート転送を開きます。シェルは開きません。他のホストもローカル ポートに接続することができます。remotehost
から imapserver
への接続はセキュリティで保護されます。
$ sshg3 -L 143:imapserver:143 -g -S user@remotehost