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저는 하루 넘게 조사해 왔으며 키를 사용하여 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

관련 정보