내 A 시스템에서 B 시스템으로 루트 사용자에 대한 키 기반 인증을 작성했습니다.
이제 A 시스템에서와 마찬가지로 B 시스템에서 새 사용자를 만들었습니다 USER
. 나는 B 머신에서 그를 위해 홈 디렉토리를 만들었고 /home/USER
머신 A에서 B 머신으로 그를위한 키 기반 인증을 만들고 싶습니다.
그래서 나는 기계에서 달렸다
ssh-keygen -t rsa
, 모든 경로를 허용하므로/home/USER/.ssh/id_rsa
문구가 없습니다.ssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIP
, 비밀번호를 입력하고 마사지를 받았습니다.
이제 기계에 로그인 해보십시오. bla bla bla
그래서 모든 것이 정상인 것 같습니다.
그러나 연결을 시도 할 때 ssh USER@BmachinesIP
비밀번호를 요청했습니다. 나는 로그를보고 실행하려고 시도 ssh -vvv USER@BmachinesIP
했으며 여기에 출력의 일부가 있습니다.
debug1: Authentications that can continue: publickey,password
debug3: start over, passed a different list publickey,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /home/USER/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/USER/.ssh/id_dsa
debug3: no such identity: /home/USER/.ssh/id_dsa
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
USER@BmachinesIP's password:
그래서 내가 잘못한 일이나 내가 바꿔야 할 일을 말해 줄 수 있습니까? 어쩌면 문제가 권한에있을 수 있습니다.
기계에서 :
drwx------ 2 USER USER SIZE DATE TIME .ssh
-rw------- 1 USER USER 1675 2011-10-31 14:36 id_rsa
-rw-r--r-- 1 USER USER 413 2011-10-31 14:36 id_rsa.pub
B 머신에서 :
drwx------ 2 USER defaultGroup SIZE DATE TIME .ssh
-rw------- 1 USER defaultGroup SIZE DATE TIME authorized_keys
답변
해결책을 찾았습니다. 권한에 문제가있었습니다.
/home/USER
원격 컴퓨터에서 모든 권한이 부여되었지만 키 기반 인증의 경우 755로 설정해야합니다.
답변
CentOS7을 새로 설치해도 같은 문제가 발생합니다.
1. 홈 디렉토리 권한 및 ~ / .ssh 및 ~ / .ssh / authorized_keys 권한 확인 (@erik에 따라)
chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys
2. / etc / ssh / sshd_config 설정 및 서비스 sshd 재시작 (각 편집 후)을 확인하십시오. 유용한 : sshd_config에서 “LogLevel VERBOSE”를 시도하십시오.
괜찮은 것을 모두 확인한 후에도 여전히 비밀번호 프롬프트가 표시됩니다.
-vvv 로그를 사용하여 ssh 클라이언트를 실행하십시오.
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
서버 (/ var / log / secure) 로그 :
Failed publickey for * from * port * ssh2: RSA *
ssh 서버는 더 많은 오류 정보를 클라이언트에 보내지 않습니다. 보안 상 위험 할 수 있습니다.
다른 포트 ‘sshd -p 5555 -d’에서 sshd를 실행하면 열쇠는 효과가 있었다. 비밀번호가없는 로그인 WTF?
그런 다음 selinux를 비활성화하고 (/ etc / selinux / config에서 SELINUX = disabled 설정) 재부팅하십시오. 암호가없는 로그인은 정상적으로 작동했습니다.
나의 현재 작업 sshd_config를 설정 :
[root@hp-bl-05 ~]# grep -vE "^#|^$" /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
SyslogFacility AUTHPRIV
LogLevel VERBOSE
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
HostbasedAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UseDNS no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp /usr/libexec/openssh/sftp-server
그래서 우리는 selinux에서 작은 것을 변경하여 암호가없는 ssh 로그인을 작동시킬 수 있다는 것을 알고 있으면 좋을 것입니다. 누구나 대답을 향상시킬 수 있습니까?
답변
이 솔루션은 SELinux를 비활성화하지 않고 사용자 디렉토리의 SELinux 권한을 수정합니다. 사용자 디렉토리 컨텍스트는로 설정해야합니다 user_home_t
.
확인하다,
$ sudo ls -Z /home/
사용자 디렉토리의 컨텍스트가 이외의 user_home_t
경우 SELinux는 공개 키를 통해 해당 사용자의 해당 사용자 디렉토리에 SSH를 허용하지 않습니다.
고치다,
$ sudo semanage fcontext -a -t user_home_t /home/azureuser
$ sudo restorecon -vvRF /home/azureuser
키 기반 로그인이 작동합니다.