web-dev-qa-db-ja.com

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

構成方法を説明する記事( http://www.howtogeek.com/121650/how-to-secure-ssh-with-google-authenticators-two-factor-authentication/ )を見つけましたログインに成功すると、OpenSSHでGoogle認証システムコードを要求します。

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

  • ユーザーがサーバーにログインするための正しい秘密鍵を持っている場合は、ユーザーをログインします。
  • ユーザーがサーバーへのログインを許可されている秘密鍵を持っていない場合は、アカウントのパスワードとGoogle認証システムコードをユーザーに尋ねます。

これは便利で(私のコンピューターでは秘密鍵だけが必要なので)、安全です(パスワード認証を有効にして安全なままにしておくことができるので)。

私が望むことを達成する方法はありますか?

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

4
EduAlm

sshdを構成してどちらか有効なキーペアを要求することは間違いなく可能ですまたは HOTP(各要求で新しいワンタイムパスワード(OTP))OATHを使用する-ベースの認証-私はそれをやっています。 GoogleAuthenticatorはOATHのもう1つの実装であると確信しています。

私の完全な記事は http://www.teaparty.net/technotes/yubikey-oath.html で読むことができますが、結果は次のとおりです。

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

PasswordAuthentication no
ChallengeResponseAuthentication yes 

pam_authをインストールします(これは、x86_64の場合のCentOS指向の方法です)。

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 

6桁のHOTPOATHに満足している場合は、digits=8をスキップしてください。 TOTP OATH(n秒ごとに新しいOTP)にも同様の方法を使用できると思いますが、ソフトウェアではなくハードウェアOATHトークンを使用しており、それらはyubikeysです。 HOTPOATHのみを実行します。

唯一の問題は、有効なキーを提示せずにsshを実行すると、OATHコードbeforeパスワードを要求されることです。逆に動作させることはできませんでしたが、それほど気にしないことにしました。プロンプトは、どのトークンが要求されているかをかなり明確にします。

5
MadHatter

追加する必要があります:

AuthenticationMethods publickey keyboard-interactive

publickeykeyboard-interactiveから/etc/ssh/sshd_configの間にコンマを入れないでください。他のすべての設定を変更する必要はありません(構成が指定されたhowtogeekチュートリアルと等しい場合)。

2
pascalpoitras