- angel_p_57
- 7740
- 15
- 1
- 0
話の発端としては「2種類だけじゃないんだよね」という話から
これ実は、パスワード認証・公開鍵認証以外にもあって全部で5種類なんだけど、「2種類だけ」と思ってる人意外と多い。 通常はそれで困らないんだけど、「パスワード認証に見えて実はキーボードインタラクティブ認証でした」という落とし穴な事例を最近聞いた。 twitter.com/docker_compose…
2022-04-21 18:49:44研究室のサーバたまに触るんですが、SSHでの認証にパスワード認証と公開鍵認証があることを今日知りました。
2022-04-21 18:19:27しかも、クライアントソフトによっては自動的に方式を切り替えてくれるから「実はキーボードインタラクティブ認証を使ってる」ってことに気付きにくくて、特定ソフトだけなぜかつながらないように見えるという。単に方式指定が間違ってるだけなんだけど。
2022-04-21 18:51:17具体的には、Dellのサーバが搭載しているBMCであるiDRAC。これはSSH接続できるけど、認証がキーボードインタラクティブ。でも入力するのはパスワードなので、パスワード認証と区別し辛い。 で、TeraTermで「パスワード認証」を指定すると、方式が違うのでつながらない、と。
2022-04-21 18:53:27TeraTermで「キーボードインタラクティブ認証」を指定してパスワードを入力すれば問題ない。また、sshコマンドやPuTTYなんかだと、自動的に判断して認証方法を切り替えてくれるから、特に意識する必要なくパスワードを入力するだけで良い。
2022-04-21 18:55:28その後、5種類軽く説明した方が良いかな? と思い立った。
この5種類についてもうちょっと説明した方がいいかな? twitter.com/angel_p_57/sta…
2022-04-21 21:30:19一番最初は「公開鍵認証」から。 公開鍵暗号の特長である「秘密鍵の持ち主でないと○○できない」という性質を利用して本人確認とする認証方式で、SSHと言えばこれ! という代表的な方式である。
2022-04-21 21:31:49なお、公開鍵暗号と言っても、使うのは「デジタル署名」である。「サーバが公開鍵で暗号化したデータをチャレンジとして送ってきて…」なんて説明すると漏れなく誤りなので要注意。 参考 → qiita.com/angel_p_57/ite…
2022-04-21 21:34:20公開鍵認証については、情処の試験でも最近聞かれるようで、まあ常識になってきてると思う。 なお、OpenSSHだと証明書を使った認証もあるけど、結局これも公開鍵認証の一種である。( ユーザ・鍵の対応の管理が違うだけ )
2022-04-21 21:36:28続いて有名な方式が「パスワード認証」 要は、ユーザに対応したパスワードを指定してくださいってだけの話で、ユーザ登録・パスワード設定がされてれば直ぐに使えるから、最もお手軽な方法ではある。
2022-04-21 21:38:38ちなみに「認証のためにパスワード文字列を指定してくださいね」ってだけの話で、そのパスワードをどのように管理しているか。それはSSHの話の外になる。
2022-04-21 21:39:48サーバによってはLDAPに問い合わせてパスワードチェックするかも知れないし、kerberosシステムが裏にいるかも知れない。あるいは、オーソドックスにサーバの shadowデータベース ( /etc/shadow ) と突き合わせるかも知れない。
2022-04-21 21:41:06さて、これ以降は知名度がガクっと下がる。続いては「ホストベース認証」 「ホスト認証」( クライアントからサーバが本物かどうか確認する手続き ) と似て異なる機能と言いつつ、それなりに似てはいる。
2022-04-21 21:43:46ホストベース認証がどういった機能かと言うと、他の認証方法のように個々人を本人確認するわけではなく「信頼する機器から『ユーザAです』と自己申告があったら、ユーザAであることを認める」と言うような。機器一括で認めるようなやり方。
2022-04-21 21:46:18あ、もちろんログイン元のユーザ名と、ログイン先のユーザ名が一致してる必要はない。そこはユーザ同士の対応付けを設定すれば良いだけだから。でも一番分かり易いのは同じユーザ名同士で対応させる形態だ。
2022-04-21 21:47:50さてこの方法。「信頼する機器から」ってのをどう判断するかなんだけど、これも公開鍵認証と同じくデジタル署名を使う。
2022-04-21 21:49:26ただし「ユーザAの使う鍵はKa、ユーザBの使う鍵はKb」のように個人毎に鍵があるのではなく、機器を代表する「ホスト鍵」を共通で使う。 このホスト鍵ってのは、「ホスト認証」で使う鍵と基本的には同じ、なのである意味ホスト認証にも似ているわけだ。
2022-04-21 21:51:25機器を代表するホスト鍵を使うからこそ、「信頼する機器からのユーザの自己申告をまるっと受け入れる」ということが可能になる。
2022-04-21 21:52:30そういう方式なので、個人の端末からログインする時に使うようなことは想定していないし、PuTTYなんかのソフトでもサポートしてない。 主な用途は、ユーザ管理の共通化されたサーバクラスタ内でサーバ間の自由な移動に用いられる感じ。
2022-04-21 21:54:39特に一昔前のLinuxベースのスーパーコンピュータシステムだとホストベース認証で多ノード使わせる方式があったと記憶している。 ただ、このやり方も難があって、かつ代替の方式もできているから、今ではそんなに見ない気もするけど。
2022-04-21 21:57:16ここまでの方式 ( 公開鍵認証、パスワード認証、ホストベース認証 ) は RFC4252 に載っている。 unixuser.org/~haruyama/RFC/…
2022-04-21 21:58:34次に出てくるのは「キーボードインタラクティブ認証」これは RFC4256 で、ただタイトルとしては「汎用インタラクティブ認証 ( Generic Interactive Authentication )」となっている。 unixuser.org/~haruyama/RFC/…
2022-04-21 22:03:10