SSH 키 인증을 위해 Keepass+Putty를 사용할 때 sudo 인증

SSH 키 인증을 위해 Keepass+Putty를 사용할 때 sudo 인증

저는 Putty를 사용하여 SSH를 통해 다양한 Linux 시스템(주로 CentOS 및 Ubuntu)에 로그인합니다. SSH 키 인증을 사용하고 키는 Keepass 2.x에 저장되어 있으며 이를 통해 Putty에 전달됩니다.기본 에이전트플러그인(기본적으로 미인 대회를 대체함). 지금까지는 잘 작동합니다.

단, 로그인 후 비밀번호를 입력해야 합니다 sudo. 해결 방법이 있나요? 그렇다면 sudo는 SSH 키를 통해 로그인할 때 비밀번호를 요구하지 않나요?


6년 전에도 비슷한 질문이 있었습니다.sudo: SSH 키를 사용하여 로그인할 때 비밀번호를 묻지 마세요 . 주어진 답변은 실제 답변은 아니지만 SSH 키를 사용하여 로그인하고 루트로 직접 로그인하는 해결 방법입니다. 이렇게 하지 않는 데에는 여러 가지 이유가 있습니다.

답변1

SSH 프록시 전달을 사용할 수 있는 경우 실제로는 다른 방법이 있습니다.pam_ssh_agent_auth.so (출처는 여기)귀하의 요구 사항을 충족하는 PAM 모듈입니다. Debian, Ubuntu libpam-ssh-agent-auth및 CentOS 패키지 에서 패키지로 사용할 수 있습니다 pam_ssh_agent_auth.

# Debian/Ubuntu:
apt update; apt install libpam-ssh-agent-auth
# CentoOS
yum install pam_ssh_agent_auth

보안 고려 사항

개발자가 말한 것처럼 SSH 프록시 전달 사용의 위험을 평가해야 합니다.

물론 몇 가지 주의 사항이 있습니다. ssh-agent 전달에는 보안 위험이 있으므로 환경에 따라 신중하게 고려해야 합니다. 신뢰할 수 없는 중간 서버가 없고 권한 있는 명령 호출에 필요한 추적성, 책임성 및 인증을 유지하려는 경우 이점이 위험보다 커야 합니다.

KeeAgent에 옵션이 있는지 확인하는 경우클라이언트 프로그램이 키 사용을 요청할 때는 항상 확인이 필요합니다.일단 설정되면 원격 호스트에 루트 액세스 권한이 있는 다른 사람으로부터 보호 수준을 제공할 수도 있습니다. 뚜렷한 이유 없이 SSH 키 요청 확인 대화 상자가 표시되면 누군가가 SSH 프록시를 남용하려고 한다는 것을 알게 됩니다. 연결.

자리 NOPASSWD를 비울 때 KeePass 및/또는 워크스테이션 화면을 항상 잠그면 . 또한 SSH 키를 사용하여 로그인을 허용하고 루트 파일에 루트로 로그인할 수 있는 모든 사람을 추가하는 것 sudoers보다 낫습니다 . sudo의 이점을 그대로 유지하기 때문입니다.rootauthorized_keys

용법

auth이를 사용하려면 기본적으로 다음의 첫 번째 줄 에 추가합니다 /etc/pam.d/sudo.

auth    sufficient      pam_ssh_agent_auth.so file=/etc/security/authorized_keys

간단한 sed 명령으로 이 작업을 수행할 수 있습니다(첫 번째 줄이 주석이므로 두 번째 줄에 추가하세요).

sed -i '2 i\auth    sufficient      pam_ssh_agent_auth.so file=/etc/security/authorized_keys' /etc/pam.d/sudo

sudo그런 다음 /etc/security/authorized_keys일반적인 한 줄 OpenSSH 호환 형식으로 SSH 인증을 사용하도록 권한을 부여 받아야 하는 사용자의 공개 SSH 키를 추가합니다.

SSH_AUTH_SOCK그런 다음 sudoers 파일을 편집하여(using) 환경 변수를 보존하도록 sudoers를 구성합니다 visudo. 이 줄을 다른 줄이 있는 섹션에 추가하세요 Defaults.

Defaults env_keep += "SSH_AUTH_SOCK"

그런 다음 SSH 클라이언트가 프록시 전달을 허용하는지 확인해야 합니다. PuTTY에서는 다음을 확인해야 합니다.

Putty 프록시 전달 설정

-A명령줄 SSH를 사용하는 경우 다음 매개변수를 지정해야 합니다 .

ssh -A [email protected]

테스트하는 동안 를 사용하여 sudo 세션을 종료하는 것을 잊지 마십시오 sudo -k.

관련 정보