Tera Termの認証方式整理

Tera Termの認証方式を整理。

認証方式

パスワード認証

ユーザ名とパスワードの組み合わせで認証する。
sshd_configで以下のように設定されていれば有効。

PasswordAuthentication yes

シンプルな半面、パスワードが漏洩すると第三者でも認証できてしまう。
ブルートフォース攻撃で突破される可能性もあり。

公開鍵認証

公開鍵と秘密鍵のペアを用意し、公開鍵はサーバに保管秘密鍵はクライアント側で保管する。
こうすることで、秘密鍵を持っているユーザのみパスワードなしで認証することができる。

鍵を紛失するとログインできなくなるため注意すること。

※キーペアはサーバ側・クライアント側どちらで作成してもよいが、サーバ側で作成する場合は秘密鍵の受け渡しに注意が必要。

※EC2インスタンス作成時の「キーペア作成」オプションは、(インスタンスではなく)AWSがキーペアを作成して公開鍵をEC2の~/.ssh/authorized_keysに登録、秘密鍵をユーザにダウンロードさせている。

~/.ssh/authorized_keys(サーバ側)

公開鍵の保管場所。
以下の要素で構成され、接続を許可するクライアントを管理している。

  • 鍵の種類(ssh-rsaなど)
  • 公開鍵(Base64)
  • コメント(鍵を識別する目印として自由につけられる)

キーボードインタラクティブ(チャレンジレスポンス)認証

サーバが質問(チャレンジ)を投げ、クライアントが回答(レスポンス)を返すことで認証。
sshd_configで以下のように設定されていれば有効。

ChallengeResponseAuthentication yes

ユースケース

  • MFA認証を実現したい
  • LDAPやRADIUS、Kerberosなどの外部サービスで認証したい

Pageant(ペイジェント)認証

Pageant(PuTTY Authentication Agent) を使ってTera Termから秘密鍵を使ったSSH認証を行う。

※Pageantは、一時的にメモリ上に保存した秘密鍵を使って認証できるようにするプログラム。
※Tera TermはPuTTYのPageantと連携する機能を持っている

ユースケース

SSH接続のたびに秘密鍵ファイルを指定したり、パスフレーズを入力するのが面倒な場合。
最初に鍵のパスフレーズを入力すれば、あとは複数の接続にわたって自動的に認証してくれる。

known_hostsについて

信頼できるサーバを管理するクライアント側のファイル。
認証方式に関係なく利用される。

以下の要素で構成され、次回以降の接続時に「以前と同じサーバか?」をチェックする。

  • ホスト名やIPアドレス ※ HashKnownHosts yes の場合はハッシュ化される
  • 鍵の種類(ssh-ed25519、ecdsa-sha2-nistp256など)
  • 公開鍵(Base64)

known_hostsに登録されるのはホスト公開鍵

クライアントがサーバに接続するとサーバは自分のホスト公開鍵(※)をクライアントに提示する。
クライアントはその鍵が known_hosts にあるかを確認する(初回なら保存)。
※公開鍵認証で使用する鍵とは別物なので注意。

ホスト公開鍵のありか

/etc/ssh/ssh_host_*_key     ←秘密鍵
/etc/ssh/ssh_host_*_key.pub   ←公開鍵(コレ!)

ホスト鍵は、サーバが「私は本物の○○サーバです」と証明するための鍵。

known_hostsの保管場所(Windows)

Tera Termで接続した場合

C:\Users\<ユーザー名>\AppData\Roaming\teraterm\ssh_known_hosts

Git BashやWindows 10/11 の場合

C:\Users\<ユーザー名>\.ssh\known_hosts
タイトルとURLをコピーしました