공개 키 인증을 사용하여 SSH를 통해 우분투 서버에 연결하려고 합니다. 어떤 이유로 "권한이 거부되었습니다(공개 키)"라는 메시지가 나타납니다. 클라이언트에서 실행할 때마다
ssh -i ~/.ssh/id_rsa <username>@<ip> -p <port>
.
내 서버의 auth.log에는 다음과 같은 출력이 있습니다.
sshd[1425]: Connection closed by <client-ip> [preauth]
그러나 동일한 사용자 이름을 사용하여 서버에 물리적으로 로그인하면 클라이언트의 다음 SSH 연결이 성공합니다. 그러나 물리적으로 로그아웃하면 클라이언트의 다음 SSH 세션이 실패합니다.
/etc/ssh/sshd_config
# What ports, IPs and protocols we listen for
Port <port>
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes
# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 1024
# Logging
SyslogFacility AUTH
LogLevel INFO
# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
PasswordAuthentication no
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM no
ClientAliveInterval 30
ClientAliveCountMax 99999
왜 이런 일이 발생하는지에 대한 단서가 있습니까? 아니면 보안에 대한 제안 사항이 있나요? 감사합니다!
답변1
의견에서 언급했듯이 암호화된 홈 디렉토리를 사용하고 있으며 아마도 다음을 사용할 것입니다.pam_mount설치하세요.
pam_mount는 로그인 중에 얻은 비밀번호를 사용하여 파티션을 마운트합니다. SSH 공개 키를 통해 로그인을 시도하고 있으므로 두 가지 문제가 있습니다.
- 공개 키 인증 중에는 비밀번호가 전송되지 않으므로 이를 사용하여 홈 디렉토리를 마운트할 수 없습니다.
- pam_mount를 사용하면 홈 디렉터리가 마운트됩니다.뒤쪽에로그인했지만 파일을
sshd
가져와야 함authorized_keys
앞으로로그인하면 설치되지 않습니다.
이러한 문제 중 하나라도 작동을 방해하기에 충분합니다.
유일한 해결책은 홈 디렉터리에서 공개 키를 가져오는 것입니다. 이것은 실제로 매우 간단합니다.
먼저 authorized_keys
홈 디렉터리에서 파일을 복사합니다.
cp -a /home/$USER/.ssh/authorized_keys /home/$USER-authorized_keys
그런 다음 sshd
다음을 추가하여 파일 사용을 나타냅니다 /etc/ssh/sshd_config
(기존 항목이 있는 경우 교체) .
AuthorizedKeysFile .ssh/authorized_keys /home/%u-authorized_keys
그리고 바운스 sshd
.
그러나 이는 홈 디렉토리를 마운트하지 않는다는 점에 유의하십시오. 홈 디렉터리의 암호를 해독하려면 여전히 비밀번호가 필요합니다. pam_mount 구성 방법에 따라 비밀번호를 묻는 메시지가 표시될 수도 있고, 쉘에 들어가 집 마운트가 해제될 수도 있습니다.