Permissão SSH negada (chave pública), mas o root ssh funciona

15

Estou tentando configurar o acesso ssh para uma conta de usuário que criei com o chef em um servidor digital ocean ubuntu 12.04. Eu tinha as opções definidas no oceano digital para copiar automaticamente a chave ssh do meu mac quando a gota é criada.

Posso fazer o ssh como root sem problemas, mas meu outro usuário não consegue se autenticar. esse parece ser um problema comum, verifiquei algumas das outras respostas e encontrei este comando para obter mais informações:

ssh -vvv -i id_rsa user@serverIP

Os logs para o usuário raiz (que obtém êxito) com esse comando são

depurar

1: Offering RSA public key: /Users/evan/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug2: input_userauth_pk_ok: fp snip!
debug3: sign_and_send_pubkey: snip!
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).

usuário com falha:

depurar

1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred 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 RSA public key: /Users/evan/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Trying private key: /Users/evan/.ssh/id_dsa
debug3: no such identity: /Users/evan/.ssh/id_dsa: No such file or directory
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.

O que para mim significa que a chave pública está incorreta. Mas, se eu fizer o login como usuário root e acessar home/otheraccount/.ssh/authorized_keys, posso ver que minha chave ssh está lá. Eu pensei que talvez houvesse um erro, então eu fiz, cp .ssh/authorized_keys ~/home/otheraccout/.ssh/authorized_keysmas isso não ajudou. Não sei mais para onde olhar.

meu etc/ssh/sshd_conig:

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security
"sshd_config" 88L, 2508C
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no

# GS

SAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding no
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60

AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server
UsePAM no
Banner /etc/ssh_banner

editar:

drwx------ 2 deploy deploy 4096 Apr 20 06:00 .ssh
-rw------- 1 deploy deploy 820 Apr 20 05:35 authorized_keys

Edit2:

Conforme sugerido nos comentários /var/log/authlog:

Apr 21 04:59:30 localhost sshd[586]: User deploy not allowed because account is locked
Apr 21 04:59:30 localhost sshd[586]: input_userauth_request: invalid user deploy [preauth]

Eu tentei fazer sudo usermod --expiredate -1 deploye ele voltouno changes

user2936314
fonte
11
Suas permissões estão corretas? ~/home/otheraccount/.sshdeve ter 700e ~/home/otheraccount/.ssh/authorized_keysdeve ter 600permissão e ambos os arquivos devem pertencer aotheraccount
clement
Eu acho que eles estão corretos, implantar é outra conta: drwx------ 2 deploy deploy 4096 Apr 20 06:00 .ssh -rw------- 1 deploy deploy 820 Apr 20 05:35 authorized_keys
user2936314
quais são as linhas de log em serverIP( /var/log/auth.log) quando você tenta fazer login como deployusuário?
clemente
interessante, reclama que o usuário está bloqueado, adicionei os logs acima.
usar o seguinte comando
não me permite editar o comentário acima: eu consertei isso com passwd -u. Pode entrar como deployagora, mas realmente curioso por que meu chef implantar está criando usuários bloqueados. Por favor, copie / cole o seu comentário acima como uma resposta para que eu possa dar-lhe crédito
user2936314

Respostas:

16
  • Os logins do SSH podem falhar por vários motivos (permissões incorretas de diretório / arquivo, chaves incorretas etc.) e o cliente de conexão apenas obtém Permission deniedou No more authentication methods to tryou algum erro genérico.

  • O motivo exato da falha no login estará disponível no log ssh /var/log/auth.logou /var/log/securedependendo da configuração do syslog.

clemente
fonte
Esta é a melhor resposta para todas as perguntas sobre falhas no problema de logins SSH que eu já vi! Em vez de adivinhar aleatoriamente permissões e nomes de arquivos errados, como sugerem todas as outras respostas, basta verificar os logs mencionados e eles contêm todas as informações necessárias!
Yaroslav Admin
O motivo exato não está no meu arquivo de log. Tudo o que diz é que a sessão foi aberta e fechada.
VectorVortec
3

Mesmo 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 (como @clement diz)

chmod o-w ~/; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys

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:

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 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?

SAD :-( para dizer que eu desabilitei o selinux (configure SELINUX = desabilitado em / etc / selinux / config) e reinicie. O login sem senha funcionou bem.

minhas configurações atuais de sshd_config em funcionamento:

[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

Portanto, seria bom saber que poderíamos mudar algo pequeno no selinux para que o login ssh sem senha funcione. Alguém pode melhorar a resposta?

mesmo aqui: /superuser/352368/ssh-still-asks-for-password-after-setting-up-key-based-authentication/1072999#1072999

gaoithe
fonte