HOME / コンピュータTips / UNIXツール / ssh / RSA鍵認証のみにし、Password認証を無効化する

Date: 2016/04/13 |  このエントリーをはてなブックマークに追加  |  Tags: ssh, RSA, password

sshdでパスワード認証を無効にし、RSAの鍵認証のみにする方法

意外に覚えきれなくて、いつも忘れるので、メモついでに残しておきます。

PasswordAuthentication no
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no

古いOpenSSHや、SunSSHの場合は、これも無効にします。

PAMAuthenticationViaKBDInt no

ざっくりした解説

ユーザ目線でのザックリとした説明を。OpenSSHではなく別のSSH実装も含めて考えているので、OpenSSHのソースをじっくり読んだわけではないため、間違ってたらすみません。

まず、Password認証を無効にする場合、PasswordAuthentication noだけで良い気もします。しかし、asswordAuthenticationというのは、「ユーザIDとPasswordを同時に送りつける認証」のことを意味してるので、それだけでは足りません。

ChallengeResponseAuthenticationが有効になっていると、クライアントは「先にID」を送り、状況に応じてサーバからパスワードを要求されます。ここで、PAMAuthenticationViaKBDIntが有効なシステムであればPAM認証キーボードから、KbdInteractiveAuthenticationが有効なシステムであればキーボードからの認証を許可、さらにUsePAMが有効であったりAuthenticationMethodsでPAMが有効であれば、事実上キーボードからパスワード入力を求められてしまうわけ。

ということで、この辺一通り設定しておけば、良いよと言う話だけれども、sshd_configにコメントアウトされてないものもあるので、いつも忘れるからメモなのです。

テスト方法

ついでなのでテスト方法も書いて置きます。

  1. sshd_configを治す
  2. sshdを再起動する
    • いまのシステムだとsshがこのとき落ちることは滅多にないんだけれど、昔はここでsshdが落ちてしまい、間違うと締め出しを食らったりしたので、コンソールからやっていたのです。シリアルコンソール重要・・・
  3. このターミナルは必ずログインしたままにしておく
  4. 別シェルを立ち上げてログインする。
    • 正常系テスト
      • RSA鍵認証が設定されているはずなので、そのまま行けるはず。→正常系テスト終わり
    • 異常系テスト
      • IDをわざとちがったものにする。
      • password認証が有効な場合、パスワードを求められる。 → 設定ミス有り
      • 何もできずPermission denied (publickey,...).がでる。 → 設定OK、
      • 上の...が、気になるならそれぞれをやっつけましょう。

Permission denied (publickey,gssapi-with-mic).のgssapiを無効に

sshd_configに下記の1行を追加します。

GSSAPIAuthentication no

GSSAPIAuthenticationってのは、OpenSSHのマニュアルをみると、

Specifies whether user authentication based on GSSAPI is allowed. The default is “no”.

Solarisだと、

      GSSAPIAuthentication
             Specifies   whether  user  authentication  based  on  GSSAPI  is
             allowed.  The default on Solaris is  ``yes''.   Note  that  this
             option applies to protocol version 2 only.

とかいているので、Solarisの場合は気になるなら無効にしてもいいでしょう。

GSSAPIを使った認証は、Generic Security Service Application Programming Interfaceのことで、よくKerberosと関連して利用される認証するAPI。シングルサインオン周りの話によく出てきますね。

別に悪いものではないのだけれども、使ってないから無効にしたいのであれば、それはそれで。