Eu encontrei uma solução. Houve um problema nas permissões.
/home/USER
na máquina remota recebeu todas as permissões, mas para a autenticação baseada em chave, ela deve ser definida como 755
Eu criei com sucesso uma autenticação baseada em chave para o usuário root da minha máquina A para a minha máquina B.
Agora, criei um novo usuário na máquina B, da mesma forma que na máquina A, vamos chamá-lo de USER
. Eu criei um diretório pessoal para ele na máquina B /home/USER
e eu quero criar uma autenticação baseada em chave para ele da máquina A para a máquina B.
Então, eu corri em uma máquina
ssh-keygen -t rsa
, aceitou todos os caminhos, por isso /home/USER/.ssh/id_rsa
e sem frases ssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIP
, digitou a senha e recebeu uma massagem Now try logging into the machine bla bla bla
Então, tudo parece estar bem.
Mas quando tentei conectar ssh USER@BmachinesIP
, pedi uma senha.
Eu tentei ver o log e corri ssh -vvv USER@BmachinesIP
e aqui está uma parte da saída:
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:
Então, alguém pode me dizer o que eu fiz de errado ou o que eu deveria mudar? Talvez o problema esteja nas permissões, aqui estão elas:
em uma máquina:
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
e na máquina B:
drwx------ 2 USER defaultGroup SIZE DATE TIME .ssh
-rw------- 1 USER defaultGroup SIZE DATE TIME authorized_keys
Eu encontrei uma solução. Houve um problema nas permissões.
/home/USER
na máquina remota recebeu todas as permissões, mas para a autenticação baseada em chave, ela deve ser definida como 755
O mesmo problema para a instalação do CentOS7.
1. verifique as permissões home dir e ~ / .ssh e ~ / .ssh / authorized_keys (conforme o @erik)
chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys
2. verifique as configurações do / etc / ssh / sshd_config & & service sshd restart (após cada edição) Útil: tente "LogLevel VERBOSE" em sshd_config.
Ainda recebo uma solicitação de senha depois de verificar tudo o que estava ok.
Execute o cliente ssh com logs -vvv:
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Logs do servidor (/ var / log / secure):
Failed publickey for * from * port * ssh2: RSA *
O servidor ssh não envia mais informações de erro para o cliente, já que isso seria um risco de segurança.
Se eu executei o sshd na porta diferente 'sshd -p 5555 -d'. A chave funcionou. Login sem senha ok. WTF
Então eu desativei o selinux (configure SELINUX = disabled em / etc / selinux / config) e reinicie. O login sem senha funcionou bem.
meu configurações atuais de trabalho 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
Então, seria bom saber se poderíamos mudar algo pequeno no selinux para fazer com que o login do ssh sem senha funcionasse. Alguém pode melhorar a resposta?
Tags ssh authentication linux