SSH 接続

Tera Term の特徴とも言える SSH 接続について解説します。Tera Term は TTSSH プラグインを導入すると SSH 接続に対応します。

前提知識

SSH には SSH1、SSH2 の2種類のプロトコルがあります。SSH2 は SSH1 の上位互換ではないので注意が必要です。接続するホストに応じて適切に選択する必要があります。TTSSH は両方のバージョンに対応しています。

また、SSH の認証方式には

があります。ここでは需要が多いと思われる認証方法について触れたいと思います。

接続の手順

Tera Term を起動すると、下図のようなダイアログにより接続方法を選ぶことができます。

接続ダイアログ

SSH で接続する場合、接続先のサーバにあわせて「SSH version」を選択してください。

接続すると、今度は認証方法を選択するダイアログが現れます。
このダイアログのデフォルト値は "TTSSH: Authentication Setup" ダイアログボックスで設定することができます。

認証方法

TTSSH は複数の認証方法をサポートしていますが、明示的に一つの認証方法を選択する必要があります。一つの認証方法に失敗した場合、続けて別の種類の認証を試みることはありません。
たとえば OpenSSH クライアントではパスワード認証と keyboard-interactive 認証の見た目がそう変わらないためサーバの認証方式を意識せずにログインできますが、TTSSH はそうではありません。keyboard-interactive 認証と公開鍵認証だけをサポートしているサーバにパスワード認証でログインしようとしても必ず失敗します。

ユーザ名入力

このダイアログが表示されたときに 設定によってあらかじめ ユーザ名が入力されます。

また、 ユーザ名が入力されていた時、または、ユーザ名を入力して入力欄からフォーカスが移動した時、 設定によってサーバーへアクセスします。

ユーザ名の入力欄の横のボタンを押すとオプションを選択できます。 ユーザ名が入力されていない場合は、tabキーでこのボタンにフォーカスが移動します。 ユーザ名が入力されている場合は、tabキーでパスワード / パスフレーズの入力欄に フォーカスが移動します。

Use default usename
設定のデフォルトユーザ名を入力します。 デフォルトユーザ名を設定していない場合は選択できません。
Use logon usename
Windows のログオンユーザ名を入力します。

パスワード / パスフレーズ入力

パスワード / パスフレーズの入力欄は、通常のダイアログと違い以下のような動作となります。

入力欄の横のボタンを押すとオプションを選択できます。

Paste from clipboard
クリップボードからパスフレーズをペーストします。
Paste from clipboard and clear clipboard
クリップボードからパスフレーズをペーストしてクリップボードを空にします。
Use control characters
チェックが入っていると制御文字を入力することができますが、 Control + Vでクリップボードのペースト等の操作はできません。 チェックが入っていないと制御文字を入力できませんが、 Control + Vでクリップボードのペースト等の操作が可能です。
Show passphrase
パスフレーズを表示するか、伏字にするか選択できます

セキュリティ警告

ssh_known_hosts ファイル

SSH 接続時には SSH サーバのホスト鍵をチェックし、一致する鍵が ssh_known_hosts にない場合には警告を表示します。
チェックの結果は以下のように分類されます。

警告が表示された場合には、意図しないサーバに接続しているか中間者攻撃に遭っている可能性があります。
しかし、始めてサーバに接続するときや、サーバの再インストールなどにより SSH サーバのホスト鍵が変更された場合にもこの警告が表示されます。「警告ダイアログに表示されている、接続中の SSH サーバのホスト鍵の指紋」と「接続しようとしている SSH サーバのホスト鍵の正確な指紋」を比較してください。

OpenSSH の場合、サーバ管理者は以下のようなコマンドでサーバのホスト鍵の指紋を取得できます。

ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub

SSHFP RR

SSH 接続時に、RFC 4255 に規定されている SSHFP RR (Secure SHell FingerPrint Resource Record) による検証が可能ですが、現在のTera Termでは DNSSEC 検証ができないので参考程度の位置づけとなります。

ドメインの所有者であれば DNS の SSHFP レコードに SSH サーバホスト鍵の指紋を登録することが可能です。クライアント(Tera Term)は SSHFP レコードを取得し、接続中のサーバホスト鍵と比較することで検証が可能です。
この機能は Windows リゾルバの制限により Windows 2000 以降でのみ有効です。

SSHFP に関して規定している RFC 4255 には「DNSSEC 認証されていない SSHFP RR を信頼してはならない」とあります。
Tera Term が利用している Windows リゾルバは DNSSEC の署名が検証ができないため、常に DNSSEC 検証に失敗します。

キーの生成

ここで、公開鍵認証に用いる公開鍵・秘密鍵ペアの生成方法を説明します。鍵ファイルを生成するには [Setup] メニューから「SSH KeyGenerator...」を選択します。

キー生成を選択

選択すると、鍵の生成ダイアログが現れます。

キー生成ダイアログ

「Key type」でキーの種類を選べますが、SSH1 プロトコルで使用する場合には「RSA1」を、SSH2 プロトコルで使用する場合には「RSA」「DSA」「ECDSA」「ED25519」を選択します。選択後、「Generate」ボタンを押すとパスフレーズの入力を催されますので、キーのパスフレーズ(パスワードのようなもの。ただし空白を含んでもいいし、一般にパスワードよりも長い物が指定可能)を入力します。入力した後は、「Save public key」ボタン、「Save private key」ボタンを押してキーを保存します。ファイル名は必要がなければデフォルトのままで構いません。保存が終わったら「Cancel」で終了します。

このキー・ファイルの使用方法ですが、デフォルトで保存した場合、拡張子が「pub」となっているファイル(「公開鍵」)の内容を、サーバの指定の場所に保管します。(一般的には (home dir)/.ssh/authorized_keys に内容を追加します。)また、拡張子が付いていないファイルは「秘密鍵」となり、ログイン時に指定する事となります。

注意:秘密鍵(private key)は第三者に絶対に知られてはいけないため、管理を厳重に行うようにしてください。また、誤ってサーバへ転送してしまわないようにしてください。