Centos 7.xサーバーにログインするたびに、audit.logには明確なエラーが表示され続けます。これは実際の失敗が何であるかを判断できないため、失敗したログイン用の毎日のスクリプトを作成しようとするのは非常に困難です。これはから抜粋したものです。aureport -au -ts today
1669. 06/02/17 08:40:03 handsm@internal 10.1.0.24 ssh /usr/sbin/sshd no 1428242
1670. 06/02/17 08:40:03 handsm@internal 10.1.0.24 ssh /usr/sbin/sshd no 1428243
1671. 06/02/17 08:40:06 handsm@internal server01 ssh /usr/sbin/sshd yes 1428244
1672. 06/02/17 08:40:06 handsm@internal 10.1.0.24 ssh /usr/sbin/sshd yes 1428246
1673. 06/02/17 08:40:13 [email protected] ? /dev/pts/3 /usr/bin/sudo yes 1428284
最初の2行が失敗し、すぐに成功することがわかります。なぜこれが起こるのか知っている人がいますか?
編集_1: 詳細なSSHログファイルが含まれています。
Feb 6 09:59:42 wb-prod-ctl sshd[50489]: Connection from 10.1.0.24 port 58847 on 192.168.61.5 port 22 Feb 6 09:59:45 wb-prod-ctl sshd[50489]: Failed publickey for handsm@internal from 10.1.0.24 port 58847 ssh2: RSA c4:a3:e9:ad:2f:5c:fa:b4:de:49:6a:7d:83:fa:11:d5 Feb 6 09:59:45 wb-prod-ctl sshd[50489]: Postponed gssapi-with-mic for handsm@internal from 10.1.0.24 port 58847 ssh2 [preauth] Feb 6 09:59:46 wb-prod-ctl sshd[50489]: Failed gssapi-with-mic for handsm@internal from 10.1.0.24 port 58847 ssh2 Feb 6 09:59:48 wb-prod-ctl sshd[50489]: pam_sss(sshd:auth): authentication success; logname= uid=0 euid=0 tty=ssh ruser= rhost=server01.internal.office user=handsm@internal Feb 6 09:59:48 wb-prod-ctl sshd[50489]: Accepted password for handsm@regsec from 10.1.0.24 port 58847 ssh2 Feb 6 09:59:48 wb-prod-ctl sshd[50489]: pam_unix(sshd:session): session opened for user handsm@internal by (uid=0) Feb 6 09:59:48 wb-prod-ctl sshd[50489]: User child is on pid 50492 Feb 6 09:59:48 wb-prod-ctl sshd[50492]: Starting session: shell on pts/3 for [email protected] from 10.1.0.24 port 58847
gssapi-with-micが失敗したと思いますか?
編集_2:
これで副作用なしにGSSAPIAuthenticationが無効になり、SSHログのエラーは消えgssapi-with-mic
ました...しかし(!)エラーは残りますFailed publickey
。
したがって、私のサーバーはADログイン(uid +パスワード)とパスワードのないログイン(公開/秘密鍵)を受け入れます。私の考えでは、私の問題はおそらく修正することはできません。 SSH には 2 つの方法のいずれかが必要であり、いずれかの方法を使用しないと、他の方法がログにエラーを記録するという事実です。
他の人がこれについての経験はありますか?
編集_3:問題が解決しました。ありがとうございます。リツズファ。
したがって、Puttyのデフォルト設定は「Pageantを使用した認証の試行」として表示されます(以下の画像を参照)。問題のサーバーに対して新しいPuttyセッションを作成してこの設定を無効にすると、エラーは表示されなくFailed publickey
なります。
答え1
デフォルトでは、OpenSSHクライアントは以前に鍵を生成した場合は公開鍵認証を試みます。私の考えでは、これを行うと、ls ${HOME}/.ssh/
キーペア -id_rsa
と表示されますid_rsa.pub
。クライアントがサーバーに接続すると、このキーペアを使用してログインを試みます。そのid_rsa.pub
ファイルがサーバーに存在しない${HOME}/.ssh/authorized_keys
か、ファイルに無効な権限があるため、sshd
サーバーはログイン試行に失敗したと正しく表示します。以下を試してください。
ssh -o PubkeyAuthentication=no
${HOME}/.ssh/
このオプションを設定すると、SSHクライアントがサーバーへの認証を試みるときにキーを使用できなくなります。それでもログメッセージの表示が中断されない場合は、-vv
SSHクライアントオプションに追加して正確な用途を確認できます。
答え2
古いスレッドを復活させて申し訳ありません。同様の質問を検索して発見しました。
複数の誤った肯定的なSSHエラーメッセージが表示される2番目の潜在的な原因は、複数のユーザー認証ソース(LDAPやローカルユーザーなど)があるLinuxシステムにあります。デフォルトの構成は、通常、「pam_unix.so」モジュールを使用してローカルユーザーを最初に確認することです。ユーザーがローカルユーザーとして存在しない場合は、他の認証ソースでそのユーザーの確認が成功した場合でも、常に失敗ログメッセージが生成されます。
(通常のように)LDAPユーザーが一般的な場合は、まずLDAPを確認してからローカル認証を試してLDAPユーザーの問題を解決できます。たとえば、Debian 10では、次の2行を変更しました/etc/pam.d/common-auth
。
# here are the per-package modules (the "Primary" block)
auth [success=2 default=ignore] pam_unix.so nullok_secure
auth [success=1 default=ignore] pam_ldap.so minimum_uid=1000 use_first_pass
# here's the fallback if no module succeeds
auth requisite pam_deny.so
到着
# here are the per-package modules (the "Primary" block)
auth [success=2 default=ignore] pam_ldap.so minimum_uid=1000
auth [success=1 default=ignore] pam_unix.so nullok_secure use_first_pass
# here's the fallback if no module succeeds
auth requisite pam_deny.so
=> "success=" の 2 行が変更され、数字が新しい位置に一致するように変更されます ("success=" はモジュールから正常に返されると、多くの行をスキップします。) "use_first_pass" フラグは保持するために移動されます。 2行目です。
これはローカルユーザーに対してLDAPをチェックすることを意味するので、完全な解決策ではありません(理想的ではないかもしれません)。
Redhat(Linuxディストリビューションなど)の問題に対する異なるアプローチで文書化されたRedhatソリューションがありますが、このソリューションにはこれらの欠点がないと考えられています(pam_localuser.soは、認証を試みる前にユーザーがローカルユーザーとして存在することを確認します) 。
https://access.redhat.com/solutions/881103
Debian と同様のシステムに対して同じソリューションを実装することは可能ですが、まだ実装していません。