14.04.1-Ubuntu Server LTSでsudo
PAM認証を設定します。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