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
저는 하루 넘게 조사해 왔으며 키를 사용하여 PAM 인증을 설정하는 방법에 대한 수십 가지 "방법"을 찾았습니다. ssh
모두 매우 유사하지만... 이유를 밝혀 주는 내용을 찾을 수 없습니다. 성공적으로 연락/통신 후 PAM 인증에 실패했습니다 ssh-agent
.
미리 감사드립니다!
고쳐 쓰다
ssh-add
클라이언트 측에서는 이것이 트릭입니다. 나는 "ssh 고급 사용자"는 아니지만 근본 원인을 파악하는 데 필요한 정보를 제공했습니다. 감사해요!
답변1
구성은 양호하지만 작업을 ssh-agent
승인 하려면 일부 ID가 필요합니다 . sudo
다음을 사용하여 프록시에 신원이 있는지 확인할 수 있습니다.
ssh-add -L
에이전트의 공개 키를 인쇄해야 하며, 그 중 적어도 하나는 서버의 공개 키와 일치해야 합니다 /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