SSH ログイン用の公開鍵またはパスワードと Google 認証システム

SSH ログイン用の公開鍵またはパスワードと Google 認証システム

記事を見つけました(http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/) では、ログイン成功時に Google Authenticator コードを要求するように OpenSSH を構成する方法について説明しています。

次のように OpenSSH を構成することは可能ですか?

  • ユーザーがサーバーにログインするための正しい秘密鍵を持っている場合は、ユーザーをログインさせます。
  • ユーザーがサーバーにログインできる秘密鍵を持っていない場合は、ユーザーにアカウントのパスワードと Google Authenticator コードを要求します。

これは便利 (私のコンピューターでは秘密鍵のみが必要になるため) かつ安全 (パスワード認証を有効にして安全なままにできるため) です。

私が望むことを達成する方法はあるでしょうか?

前もって感謝します。 :)

答え1

sshdを要求するように設定することは間違いなく可能ですどちらか有効な鍵ペアまたはHOTP (リクエストごとに新しいワンタイム パスワード (OTP)) OATH ベースの認証を使用する - 私はこれを実行しています。Google Authenticator は単なる別の OATH 実装であると確信しています。

私の全文は以下で読むことができます。http://www.teaparty.net/technotes/yubikey-oath.htmlしかし、結論は次のとおりです。

sshdすでに公開鍵ベースの認証を許可するように設定されていると仮定すると (ほとんどの場合はそうなっています)、次の 2 行を追加しますsshd_config

PasswordAuthentication no
ChallengeResponseAuthentication yes 

インストールpam_auth(これは CentOS 指向の方法、x86_64 用)。

yum install pam_oath
ln -s /usr/lib64/security/pam_oath.so /lib64/security/

認証ファイル/etc/users.oath、モード600、所有者を作成しroot:root、次のような行を追加します。

#type   username        pin     start seed
HOTP    fred            -       123a567890123b567890123c567890123d567890

/etc/pam.d/sshd行を編集して追加する

auth required pam_oath.so usersfile=/etc/users.oath window=5 digits=8 

digits=86桁のHOTP OATHでよければ、スキップしてください。同様の方法がTOTP OATH(毎回新しいOTP)にも使えると思います。数秒かかりますが、ソフトウェア OATH トークンではなくハードウェア OATH トークンを使用しており、それらは HOTP OATH のみを実行する YubiKey です。

唯一の難点は、有効なキーを提示せずにSSH接続すると、OATHコードが求められることです。前にパスワード。逆の方法で動作させることはできなかったのですが、それほど気にしないことにしました。プロンプトにより、どのトークンが要求されているかがかなり明確に示されるからです。

答え2

以下を追加する必要があります:

AuthenticationMethods publickey keyboard-interactive

publickeykeyboard-interactiveの間にコンマを入れないでください/etc/ssh/sshd_config。その他の設定は変更する必要はありません (設定が howtogeek チュートリアルと同じである限り)。

関連情報