Ubuntu 14.04.1で動作する公開鍵(パスワードなし)+ Google認証システムでSSHを取得しようとしています


20

Ubuntu 14.04.1(OpenSSH 6.6およびlibpam-google-authenticator 20130529-2を使用)を使用しています。

公開鍵が(パスワードなしで)認証され、ユーザーがGoogleの認証システムからのコードの入力を求められるSSHログインを設定しようとしています。

これらの手順に従う/適応すると、パスワードプロンプトとGoogle認証プロンプトが表示されます。

パッケージをインストールし、ファイル/etc/ssh/sshd_config/etc/pam.d/sshファイルを編集しました

/etc/ssh/sshd_config

ChallengeResponseAuthentication yes
AuthenticationMethods  publickey,keyboard-interactive
UsePAM yes

との下部に/etc/pam.d/ssh

auth required pam_google_authenticator.so nullok # (I want to give everyone a chance to set up their 2FA before removing "nullok")

PAMは順序に依存することを知っていますが、それsshd_configも同じですか?

何が間違っていますか?任意の助けをいただければ幸いです。

回答:


28

うまく機能して、最初にやった:

apt-get install libpam-google-authenticator

/etc/pam.d/sshd次の行を変更/追加しました(上部):

# @include common-auth
auth required pam_google_authenticator.so

そして/etc/ssh/sshd_config

ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no

正常に機能し、公開キーによる認証後に「検証コード」プロンプトが表示されるようになりました。パスワード認証方法をPAMから事実上削除したため、パスワード+トークンまたはキー+トークンによる認証をどのように許可するかわかりません。

Ubuntu 14.04.1 LTS(GNU / Linux 3.8.0-19-generic x86_64)とssh -vを使用:OpenSSH_6.6.1p1 Ubuntu-2ubuntu2、OpenSSL 1.0.1f 6 Jan 2014


それで、後世のために、私は自分の問題に気付きました。私も試しましたPasswordAuthentication noが、そうではありませんでした。問題は、〜/ .ssh / configファイルにあった/持っControlMaster autoていたControlPathディレクティブとディレクティブです。自分がロックアウトされないようにしたかったので、SSHセッションは常に開いたままにしておきました。私のコンピューターはそれらを再利用するだけなので、システムがトークンを要求することなく常に入りました。私はあなたの答えを正しいとマークしました。それに従う人が実際に機能するセットアップを得るからです。ありがとう!
JT。

2
私は私が持っている7. CentOSのを使用していますPasswordAuthentication noChallengeResponseAuthentication yesAuthenticationMethods publickey,keyboard-interactive、およびUsePAM yessshd_config。キー検証してから、Google認証システムトークン要求し、次にパスワード要求します。3つすべてを実行します。いずれもスキップできません。またAuthenticationMethods publickey,keyboard-interactive:pam、manページで示唆されているように試しましたが、それによって何も変わりませんでした。何か案は?
ニックウィリアムズ

6
@NickWilliams私は同じ問題を抱えていました。私にとってそれを修正したのは@include common-auth、答えが示す行を賞賛する必要があるということでした。pam_google_authenticator最初は/etc/pam.d/sshd の行に対するコメントだと思っただけです。
-freb

5
ありがとうございました!私の解決策はまったく同じではありませんでした(コメントアウトする必要がありましたauth substack password-auth)が、あなたのコメントは私の問題を解決しました!
ニックウィリアムズ


7

私はやっとこれをauth [success=done new_authtok_reqd=done default=die] pam_google_authenticator.so nullok一番上に置くことで動かすことができました/etc/pam.d/sshd

pam.dのmanページによると:

  • success=done は、Google認証システムがサインオフすると、それ以上の認証は実行されず、追加のパスワードプロンプトが表示されないことを意味します。
  • default=die は、Google認証システムがログインの試行を拒否した場合、パスワードプロンプトをスキップして認証が直ちに失敗することを意味します。

だから、[success=done new_authtok_reqd=done default=die]ソートの間に混在しているsufficientrequisite成功は、すぐに(十分な)終了した場合、失敗ならば、またすぐに(必須)終了:我々は両方の動作が必要なことから、コントロールの値。

nullokpam_google_authenticator.so の引数~/.google_authenticatorは、ユーザーのファイルが見つからない場合、公開鍵認証が通常どおりに実行されることを意味することに注意してください。これは、2FAでアカウントのサブセットのみをロックダウンする場合に便利です。


6

Linus Kendallの答えは古いシステムでも動作するはずですが、新しいLinuxマシンでは問題があります。私のArch LinuxベースのWebサーバーでは、sshキーを受け取った後、設定によりオーセンティケーターコードとパスワードを求められます(つまり、3つすべてが必要です)。

この問題を防ぎ、すべてのシステムで機能するはずのより簡単な解決策は、エントリを次の/etc/pam.d/sshdように変更することです。

auth sufficient pam_google_authenticator.so

そして、Linusが言及したのと同じ `` / etc / ssh / sshd`を編集します:

ChallengeResponseAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no

サーバーが公開鍵を受け入れた後、認証トークンを要求するはずです。パスワードを要求するべきではありません。

補足説明として、sftpユーザーアカウントを使用する場合は、Google認証システムをバイパスして機能させる必要があります。これは、sftp刑務所を使用して安全に行う方法の提案です。でetc/ssh/sshd_config

Subsystem sftp internal-sftp
Match User ftp-user
  PasswordAuthentication yes
  AuthenticationMethods password
  ChrootDirectory /path/to/ftp/dir
  ForceCommand internal-sftp

/ path / to / ftp / dirルートのアクセス権を書き込み専用にする必要があります(たとえばchown root:root /path/to/ftp/dirchmod 755 /path/to/ftp/dirそのディレクトリの上のすべての親にも安全なアクセス権が必要です。通常これを行う方法は、chrootディレクトリ/home/shared/userを作成し、そこにディレクトリ(「データ」など)があり、次に共有したいディレクトリを次のようにマウントします。sudo mount -o bind /path/to/ftp/dir /home/shared/user/data

これらの手順をすべて実行すると、sshユーザーの公開キー+ Google認証システムログイン、およびデータ転送用の機能的なパスワードで保護されたsftpアカウントが得られます。


これはうまく機能します。そして、なんらかの理由でcommon-authをコメントアウトすることに抵抗があるため、これはLinusのソリューションよりも理想的でした。
ルークサパン

どうもありがとう!sshをデバッグする夜を無駄にし、なぜpubkey + authcodeの後にパスワードを入力しなければならないのか疑問に思う……
felix021
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.