Eu criei com sucesso uma autenticação baseada em chave para o usuário root da minha máquina A para minha máquina B.
Agora, criei um novo usuário na máquina B, o mesmo que na máquina A, vamos chamá-lo USER
. Criei um diretório inicial para ele na máquina B /home/USER
e 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, portanto/home/USER/.ssh/id_rsa
e sem frasesssh-copy-id -i /home/USER/.ssh/id_rsa.pub USER@BmachinesIP
, digitou a senha e recebeu massagem
Agora tente fazer login na máquina bla bla bla
Então, tudo parece estar bem.
Mas quando tentei me conectar ssh USER@BmachinesIP
, pediram 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 fiz de errado ou o que devo 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
fonte
chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys
então ele funciona. Copiado da resposta de Maxime R. partir daqui: askubuntu.com/questions/54670/passwordless-ssh-not-workingMesmo problema para mim nova instalação do CentOS7.
1. verifique as permissões de diretório inicial e as permissões ~ / .ssh e ~ / .ssh / allowed_keys (conforme @erik)
2. verifique / etc / ssh / sshd_config settings && service sshd restart (após cada edição) Útil: tente "LogLevel VERBOSE" em sshd_config.
Ainda recebi o aviso de senha depois de verificar tudo o que estava ok.
Execute o cliente ssh com logs -vvv:
Logs do servidor (/ var / log / secure):
O servidor ssh não envia mais informações de erro ao cliente, pois isso seria um risco à segurança.
Se eu executasse o sshd na porta diferente 'sshd -p 5555 -d'. A chave funcionou. Login sem senha ok. WTF?
Então desabilitei o selinux (configure SELINUX = desabilitado em / etc / selinux / config) e reiniciei. O login sem senha funcionou bem.
minhas configurações atuais de sshd_config em funcionamento:
Portanto, seria bom saber que podemos mudar algo pequeno no selinux para que o login ssh sem senha funcione. Alguém pode melhorar a resposta?
fonte
A solução não está desativando o SELinux, mas para corrigir as permissões do diretório do usuário. O contexto do diretório do usuário deve estar definido como
user_home_t
.Checar,
Se o contexto para o diretório do usuário for qualquer coisa
user_home_t
, o SELinux não permitiria o SSH via chave pública nesse diretório do usuário.Consertar,
O login baseado em chave agora deve funcionar.
fonte