ssh-agentに正常に接続した後、PAMはsudoを認証できません。

ssh-agentに正常に接続した後、PAMはsudoを認証できません。

14.04.1-Ubuntu Server LTSでsudoPAM認証を設定します。ssh-agent

それでもPAMを使用してssh-agentを介してsudoを正常に認証することはできません。

私の関連項目は次のとおりです/var/log/auth.log

Jun 17 11:31:16 host sudo[21318]: pam_ssh_agent_auth: Beginning pam_ssh_agent_auth for user userName
Jun 17 11:31:16 host sudo[21318]: pam_ssh_agent_auth: Attempting authentication: `userName' as `userName' using /etc/security/authorized_keys
Jun 17 11:31:16 host sudo[21318]: pam_ssh_agent_auth: Contacted ssh-agent of user userName (1000)
Jun 17 11:31:16 host sudo[21318]: pam_ssh_agent_auth: Failed Authentication: `userName' as `userName' using /etc/security/authorized_keys

ご覧のとおり、正常に接続されましたが認証ssh-agentに失敗しました。 PAM は、次の認証方法に置き換え、続行する前に sudo/userName パスワードを要求します。認証されたキーを使用して接続するsudoと、パスワードを必要としないように設定しようとします。ssh

関連文書と内容は次のとおりです。

/etc/pam.d/sudo

#%PAM-1.0

auth       sufficient pam_ssh_agent_auth.so file=/etc/security/authorized_keys debug
auth       required   pam_env.so readenv=1 user_readenv=0
auth       required   pam_env.so readenv=1 envfile=/etc/default/locale user_readenv=0

@include common-auth
@include common-account
@include common-session-noninteractive

/etc/security/authorized_keysファイル情報:このファイルには4つのssh-rsa公開鍵が含まれています。

-rw-r--r-- 1 root root 1597 Jun 16 16:07 /etc/security/authorized_keys

/etc/sudoers

#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_keep += SSH_AUTH_SOCK

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

そして、正気のために、SSH_AUTH_SOCKこれが実際にsudo正しく「チェーンの上に渡されている」ことがわかります。

printenv | grep SSH

SSH_AUTH_SOCK=/tmp/ssh-m9Ume3GOIP/agent.15964

sudo printenv | grep SSH

SSH_AUTH_SOCK=/tmp/ssh-m9Ume3GOIP/agent.15964

私はサーバーにSSHを介して接続します。

ssh -A host@ip_address

参考になる追加情報を提供します。お問い合わせください :)

sudo私は1日以上調べてきましたが、キーを使ってPAM認証を設定する方法について数十の「方法」を見つけました。sshすべて非常に似ていますが、理由を明らかにするものは見つかりません。正常に連絡/通信した後、PAM認証に失敗しましたssh-agent

よろしくお願いします!

修正する

ssh-addクライアント側ではこれがトリックです。私は「sshの上級ユーザー」ではありませんが、根本的な原因を特定するために必要な情報を提供しました。ありがとうございます!

答え1

構成は良好ですが、ジョブをssh-agent承認するには一部のIDが必要です。sudo以下を使用して、プロキシにアイデンティティがあることを確認できます。

ssh-add -L

エージェントの公開鍵を印刷する必要があり、そのうちの少なくとも1つはサーバーの公開鍵と一致する必要があります/etc/security/authorized_keys

エージェントにIDがない場合は、コンピュータに追加して再度使用する必要があります。

ssh-add [path/to/key]

メッセージが表示されたら、パスワードを入力してください。

答え2

.bashrcとして実行する必要があるユーザーに追加し、ssh-agent特別なansibleユーザーのために使用しています。プロセスは非常に目立っていて、ssh-agentログインするたびにきれいに保ちようとしました。

確実にするためにssh-agent実行する必要があります。仕える人接続が確立された場所です。

$HOME/.bashrc

CSSH=$(ssh-add -L 2>/dev/null |grep -c ssh-rsa)
if [ $CSSH -eq 0 ]; then
 pkill ssh-agent
 eval `ssh-agent -s`
 ssh-add
else
 echo "SSH agent already running"
fi

関連情報