키 기반 인증을 설정 한 후 SSH에서 여전히 비밀번호를 묻습니다.


10

내 A 시스템에서 B 시스템으로 루트 사용자에 대한 키 기반 인증을 작성했습니다.

이제 A 시스템에서와 마찬가지로 B 시스템에서 새 사용자를 만들었습니다 USER. 나는 B 머신에서 그를 위해 홈 디렉토리를 만들었고 /home/USER머신 A에서 B 머신으로 그를위한 키 기반 인증을 만들고 싶습니다.

그래서 나는 기계에서 달렸다

  1. ssh-keygen -t rsa, 모든 경로를 허용하므로 /home/USER/.ssh/id_rsa문구가 없습니다.
  2. 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

답변:


13

해결책을 찾았습니다. 권한에 문제가있었습니다.

/home/USER 원격 컴퓨터에서 모든 권한이 부여되었지만 키 기반 인증의 경우 755로 설정해야합니다.


2
와. 적절한 퍼블릭 키 구성의 중심이지만 권한에 대한 디버그 출력이 없다는 것이 놀랍습니다.
jchook

와우, 네 말이 맞아 지금은 효과가 있습니다 ....하지만 원래 원래 권한을 유지하고 싶습니다 (775). 그것을 바꾸는 방법에 대한 단서가 있습니까?
Pablo Olmos de Aguilera C.

방법이없는 것 같습니다. 해결 방법 만 sshd_config에서 StrictModes를 no로 설정합니다. : /.
Pablo Olmos de Aguilera C.

2
기본적으로 다음 권한이 필요합니다. chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys, 작동합니다. 여기에서 Maxime R.의 답변에서 복사 : askubuntu.com/questions/54670/passwordless-ssh-not-working
erik

2
이 모든 권한 변경을 수행했으며 ssh를 사용할 때 여전히 비밀번호를 묻습니다. 또한 개인 키가 두 컴퓨터 (우분투)에서 동일하다는 것을 확인했습니다. 꽤 당황 스럽습니다.
Amalgovinus

2

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 로그인을 작동시킬 수 있다는 것을 알고 있으면 좋을 것입니다. 누구나 대답을 향상시킬 수 있습니까?


0

이 솔루션은 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

키 기반 로그인이 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.