내가 겪고 있는 문제는 내가 유지 관리하는 서버에서 홈 디렉터리의 Ceph 파일 시스템으로 전환한 후 RSA 키를 통한 SSH 로그인이 갑자기 작동을 멈춘다는 것입니다. 몇 가지 사항을 확인해 보았으나 인터넷에서 찾은 해결책 중 어느 것도 효과가 없었습니다.
첫째, 예, homedir 및 .ssh/*에 대한 내 권한이 정확합니다.
~$ ls -la .ssh
drwx------ 1 johndoe foo 5 10 apr 20:24 .
drwx------ 1 johndoe foo 50 8 aug 19:51 ..
-rw------- 1 johndoe foo 1617 7 aug 18:56 authorized_keys
-rw-r--r-- 1 johndoe foo 680 10 apr 20:24 config
-rw------- 1 johndoe foo 1675 17 dec 2018 id_rsa
-rw-r--r-- 1 johndoe foo 408 17 dec 2018 id_rsa.pub
-rw-r--r-- 1 johndoe foo 4050 10 apr 20:24 known_hosts
또한 서버의 모든 사용자에게 이 문제가 있는 것으로 보이므로 해당 권한은 문제가 되지 않습니다.
그 다음으로 확인한 것은 ssh -vvv server
. 그러면 다음과 같은 출력이 표시됩니다.
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: RSA SHA256:SOMETHING /home/john/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/john/.ssh/id_dsa
debug3: no such identity: /home/john/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /home/john/.ssh/id_ecdsa
debug3: no such identity: /home/john/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /home/john/.ssh/id_ed25519
debug3: no such identity: /home/john/.ssh/id_ed25519: No such file or directory
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
놀랍게도 id_dsa
대신 개인 키를 사용해 본다는 언급만 나와 있었는데 id_rsa
, 키를 복사하지 않은 서버에 연결을 시도한 후에도 똑같은 일이 일어난 것처럼 보였습니다.
공개 키 복사를 다시 사용해 보았는데 ssh-copy-id server
비밀번호를 묻는 메시지가 표시되고 시도해 보라고 했지만 ssh server
여전히 비밀번호를 묻는 메시지가 표시되었습니다.
서버 측에서는 문제의 징후가 있는지 확인하려고 노력합니다. 그래서 실행을 시도했는데 sudo journalctl -u sshd.service -f
연결을 시도할 때 다음과 같은 출력이 나온 다음 올바르게 입력한 비밀번호를 물었습니다.
aug 08 20:42:13 server.domain.com sshd[30191]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=sshgateway.otherdomain.com user=johndoe
aug 08 20:42:14 octiron.liacs.nl sshd[30191]: Accepted password for johndoe from 1.3.3.7 port 43636 ssh2
따라서 키가 정확함에도 불구하고 서버는 여전히 인증에 실패하는 것 같습니다.
이 시점에서 나는 내가 할 수 있는 일을 찾으려고 애썼다. SSH를 통해 연결을 시도하는 자세한 결과가 명확하게 나열되어 있으므로 Authentications that can continue: publickey
pubkey가 예상한 대로 작동할 것이라고 가정했습니다. 권한은 모두 괜찮지만 키를 작동시키는 방법을 아직 모르겠습니다.
이 문제를 해결하기 위한 조언을 주시면 감사하겠습니다.
편집: 로컬 사용자로 동일한 작업을 수행하려고 하면(ceph 설치의 homedir이 아닌 로컬 디스크의 homedir 사용) 모두 예상대로 작동합니다.
키 입력만 사용하여 로그인한 후 Ctrl+C를 사용하여 종료하려고 하면 다음이 에 추가됩니다 /var/log/secure
.
Aug 8 23:22:34 server sshd[16775]: Connection closed by 132.229.44.36 port 59610 [preauth]
Aug 8 23:22:51 server unix_chkpwd[16780]: password check failed for user (johndoe)
Aug 8 23:22:51 server sudo: pam_unix(sudo:auth): authentication failure; logname=johndoe uid=200104 euid=0 tty=/dev/pts/0 ruser=johndoe rhost= user=johndoe
Aug 8 23:22:51 server sudo: johndoe : TTY=pts/0 ; PWD=/home/johndoe ; USER=root ; COMMAND=/bin/cat /var/log/secure
Aug 8 23:22:51 server sudo: pam_unix(sudo:session): session opened for user root by johndoe(uid=0)
답변1
새 테스트에서는 setenforce 0
서버에서 SELinux(또는)를 비활성화하면 정상적인 로그인이 된다고 말씀하셨습니다. 마운트된 파일 시스템과 이 사용자에 대한 SELinux 설정이 잘못되었을 수 있습니다.... permissive
ssh
.ssh
.ssh/*
다음을 시도해 보십시오:
restorecon -rv /home/*/.ssh
(또는 해당 사용자 한 명만 사용).