Estou tentando fazer o ssh em um servidor CentOS sobre o qual não tenho controle .. o administrador adicionou minha chave pública ao servidor e insiste que a falha está comigo, mas não consigo descobrir o que está errado.
Configure em .ssh:
tim@tim-UX31A:~$ cat ~/.ssh/config
User root
PasswordAuthentication no
IdentityFile ~/.ssh/id_rsa
Permissão nos meus arquivos-chave:
tim@tim-UX31A:~$ ls -l ~/.ssh/id_rsa*
-rw------- 1 tim tim 3326 Okt 20 17:28 /home/tim/.ssh/id_rsa
-rw-r--r-- 1 tim tim 746 Okt 20 17:28 /home/tim/.ssh/id_rsa.pub
Log de conexão que não consigo entender:
tim@tim-UX31A:~$ ssh -vvv [email protected]
OpenSSH_7.2p2 Ubuntu-4ubuntu2.1, OpenSSL 1.0.2g 1 Mar 2016
debug1: Reading configuration data /home/tim/.ssh/config
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: resolving "10.0.12.28" port 22
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to 10.0.12.28 [10.0.12.28] port 22.
debug1: Connection established.
debug1: identity file /home/tim/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/tim/.ssh/id_rsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1
debug1: match: OpenSSH_6.6.1 pat OpenSSH_6.6.1* compat 0x04000000
debug2: fd 3 setting O_NONBLOCK
debug1: Authenticating to 10.0.12.28:22 as 'root'
debug3: hostkeys_foreach: reading file "/home/tim/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/tim/.ssh/known_hosts:3
debug3: load_hostkeys: loaded 1 keys from 10.0.12.28
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal
debug2: KEX algorithms: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,ext-info-c
debug2: host key algorithms: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,[email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa
debug2: ciphers ctos: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
debug2: ciphers stoc: [email protected],aes128-ctr,aes192-ctr,aes256-ctr,[email protected],[email protected],aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-sha1
debug2: compression ctos: none,[email protected],zlib
debug2: compression stoc: none,[email protected],zlib
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug2: peer server KEXINIT proposal
debug2: KEX algorithms: [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
debug2: host key algorithms: ssh-rsa,ecdsa-sha2-nistp256
debug2: ciphers ctos: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: ciphers stoc: aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,[email protected],[email protected],[email protected],aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,arcfour,[email protected]
debug2: MACs ctos: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: MACs stoc: [email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],[email protected],hmac-md5,hmac-sha1,[email protected],[email protected],hmac-sha2-256,hmac-sha2-512,hmac-ripemd160,[email protected],hmac-sha1-96,hmac-md5-96
debug2: compression ctos: none,[email protected]
debug2: compression stoc: none,[email protected]
debug2: languages ctos:
debug2: languages stoc:
debug2: first_kex_follows 0
debug2: reserved 0
debug1: kex: algorithm: [email protected]
debug1: kex: host key algorithm: ecdsa-sha2-nistp256
debug1: kex: server->client cipher: [email protected] MAC: <implicit> compression: none
debug1: kex: client->server cipher: [email protected] MAC: <implicit> compression: none
debug3: send packet: type 30
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug3: receive packet: type 31
debug1: Server host key:
debug3: hostkeys_foreach: reading file "/home/tim/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /home/tim/.ssh/known_hosts:3
debug3: load_hostkeys: loaded 1 keys from 10.0.12.28
debug1: Host '10.0.12.28' is known and matches the ECDSA host key.
debug1: Found key in /home/tim/.ssh/known_hosts:3
debug3: send packet: type 21
debug2: set_newkeys: mode 1
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug3: receive packet: type 21
debug2: set_newkeys: mode 0
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug2: key: /home/tim/.ssh/id_rsa (0x55ee619ab2b0), explicit, agent
debug2: key: /home/tim/.ssh/id_rsa (0x55ee619bcfa0), agent
debug2: key: tim@Tim-UX31A-Debian (0x55ee619b9370), agent
debug3: send packet: type 5
debug3: receive packet: type 6
debug2: service_accept: ssh-userauth
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug3: send packet: type 50
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-mic,password
debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive
debug3: authmethod_lookup gssapi-keyex
debug3: remaining preferred: gssapi-with-mic,publickey,keyboard-interactive
debug3: authmethod_is_enabled gssapi-keyex
debug1: Next authentication method: gssapi-keyex
debug1: No valid Key exchange context
debug2: we did not send a packet, disable method
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug1: Unspecified GSS failure. Minor code may provide more information
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available
debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/tim/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering RSA public key: /home/tim/.ssh/id_rsa
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Offering RSA public key: tim@Tim-UX31A-Debian
debug3: send_pubkey_test
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
ssh [email protected]
como o log menciona o Kerberos, o servidor CentOS pode ser integrado ao domínio (AD, IPA, ...). Você precisa descobrir qual usuário deve usar. Pergunte ao administrador. Por exemplo, estamos usando o IPA, portanto, permitimos que os usuários se conectem a determinados servidores com sua conta de domínio IPA e par de chaves e, se necessário, podem usar o sudo. Sem acesso root :)Respostas:
Isso geralmente resolve a maioria dos problemas de permissão de chave autorizada por SSH no lado do servidor , supondo que alguém não tenha feito alterações adicionais nas permissões.
Se o seu administrador criou o arquivo .ssh / directory ou .ssh / allowed_keys como root (o que é mais comum como isso é realizado), não é permitido ter o arquivo de propriedade de outro usuário (mesmo que o root!).
O Userify (aviso de isenção de responsabilidade: co-fundador) faz isso exatamente da mesma maneira automaticamente. Https://github.com/userify/shim/blob/master/shim.py#L285
fonte
sudo chown $USER:$USER ~/ -R; sudo chmod o-rwx ~/ -R
que irá poupar tempo digitando, mas pode ser mais difícil para um novato entenderEu tive exatamente o mesmo problema em dois servidores: um Linux executando Debian stretch e em um NAS (Synology DS715)
descobriu-se que, nos dois casos, as permissões do diretório inicial no servidor estavam erradas
o auth.log no servidor foi muito útil
no Linux, ele tinha o bit de gravação / grupo ativado (drwxrwxr - x), então eu tive que remover pelo menos a gravação no grupo (chmod gw ~ /) e funcionou
na Synology, por qualquer motivo, houve um pouco de dificuldade
Eu tive que mudar isso com
e eu poderia conectar sem uma senha
fonte
chmod -t
... Acabei com:admin@SYN:~$ ls -ald . .ssh .ssh/* drwxr-xr-x 6 admin users 4096 Jan 10 15:54 . drwx------ 2 admin users 4096 Jan 10 15:54 .ssh -rwx------ 1 admin users 401 Jan 10 15:54 .ssh/authorized_keys -rw------- 1 admin users 1679 Jan 10 15:49 .ssh/id_rsa -rwxr--r-- 1 admin users 396 Jan 10 15:49 .ssh/id_rsa.pub -rwx------ 1 admin users 396 Jan 10 10:04 .ssh/known_hosts
Ao usar o CentOS 7, tenho certeza de que também se aplica a outros sistemas operacionais Linux que usam sshd. Com o acesso root, você pode determinar mais sobre por que a autenticação pode estar falhando. Para fazer isso:
vi /etc/ssh/sshd_config
SyslogFacility AUTH LogLevel INFO
systemctl restart sshd
tail -l /var/log/messages
Por exemplo, eu estava tendo alguns dos mesmos problemas mencionados acima.
Usando essas etapas, eu pude confirmar que o problema era de permissões no arquivo allowed_keys. Ao definir chmod como 644 no arquivo de chaves autorizadas do meu usuário, o problema foi corrigido.
fonte
Parece que as permissões na sua
.ssh
pasta não foram copiadas e coladas corretamente. Você poderia adicioná-lo novamente?Se o modo estrito estiver ativado, precisamos garantir que
.ssh
as permissões corretas sejam:.ssh/
deve ter permissões0700/rwx------
.ssh/*.pub
arquivos devem ser644/rw-r--r--
.ssh/*
(outros arquivos em .ssh)0600/rw-------
Como as coisas o procuram em termos de permissão?
fonte
Apenas no caso de alguém tropeçar nessa resposta - nenhuma das recomendações funcionou no meu cenário. No final, o problema foi que eu criei uma conta sem senha definida. Depois de definir a senha
usermod -p "my password" username
e desbloquear à força a conta,usermod -U username
tudo ficava meio pêssego.fonte
Eu tive um problema semelhante , em que a conexão ssh tenta a chave
~/.ssh/id_rsa
antes de parar inesperadamente:No meu caso, isso ocorreu devido a um antigo arquivo de chave pública localizado no
.ssh
diretório:Mover / excluir a
id_rsa.pub
partir do.ssh
diretório resolveu o problema.Pelo que entendi: quando há uma chave pública presente no lado do cliente, o SSH 1st valida a chave privada. Se falhar, não tentará usar a chave privada para conectar-se remotamente.
Enviei um email para a lista de discussão openssh: https://lists.mindrot.org/pipermail/openssh-unix-dev/2016-April/035048.html .
fonte
Encontramos este problema. Permissões e propriedade dos arquivos .ssh estavam corretas. Em / var / log / messages, encontramos:
Portanto, a solução para o desenvolvedor vm em que não nos preocupamos com segurança é desativar o selinux. Edite / etc / sysconfig / selinux e altere SELINUX = desativado e reinicie.
fonte
Também encontrou esse problema. O setroubleshoot não parecia funcionar no meu ambiente, portanto não havia esse registro de log em / var / log / messages. Desabilitar o SELinux não era uma opção para mim, então eu fiz
Após esse login pela rsa key funcionou bem.
fonte
Caso isso também salve alguém. Eu estava tentando copiar uma chave da minha máquina Ubuntu 18.04 para 2 servidores CentOS 7. Eu costumava
ssh-copy-id
transferi-los. Um funcionou, um não. Então, eu passei por todas as permissões de depuração e não encontrei nada. Então, finalmente, puxei o arquivo/etc/ssh/sshd_config
nos dois servidores e passei linha por linha através deles. Finalmente eu encontrei, provavelmente algo que alguém modificou muito antes de eu entrar no trabalho.Uma leitura:
AuthorizedKeysFile .ssh/authorized_keys
E outra leitura:,
AuthorizedKeysFile ~/.ssh/authorized_keys
que estava no servidor que não estava aceitando minhas chaves. Obviamente, olhando entre os dois arquivos e observando o comentário que declara os padrões de pesquisa padrão não incluem o principal,~/
eu o removi e reiniciei o sshd. Problema resolvido.fonte
Um log de erros do lado do cliente que termina assim:
pode ser causado por uma restrição (remota) do lado do servidor no login raiz quando o arquivo de configuração sshd contém:
A sugestão de JonCav para habilitar o log foi útil na depuração desse problema. Embora o spew de depuração do lado do cliente tenha sido extraordinariamente inútil, coloque o seguinte no arquivo sshd_config do servidor sshd :
acabou produzindo mensagens de log úteis:
No caso em que apenas o login root falha, e desde que a autenticação de chave seja permitida pela política de segurança, uma alteração no arquivo sshd_config pode ajudar:
Sua milhagem pode variar, embora isso geralmente ajude, alguma outra configuração ainda pode interferir, de acordo com um comentário encontrado em alguns arquivos sshd_config :
Mesmo que você não consiga alterar facilmente a configuração do servidor remoto para depuração dessa maneira, pode-se comprovar a configuração do lado do cliente até certo ponto, usando os mesmos arquivos de identidade para ssh em uma conta não raiz no mesmo servidor remoto.
fonte
O motivo, no meu caso, foi uma opção configurada de maneira personalizada
AuthorizedKeysFile
no arquivo/etc/ssh/sshd_config
. Como foi definido como dir (home/home/webmaster/.ssh/authorized_keys
) de outro usuário , o usuário que eu estava tentando acessar não tinha acesso a esse arquivo / diretório.Depois de alterá-lo e reiniciar o ssh-server (
service ssh restart
) tudo voltou ao normal. Agora posso fazer login com minha chave privada.fonte
Percebo por que a segurança pode incomodar as pessoas. Eu só tive o
ssh won't use my key
problema novamente. Eu o resolvi entrando no servidor remoto e executandoe depois da minha área de trabalho (tentando ssh no servidor)
No servidor eu consegui
Authentication refused: bad ownership or modes for directory /
Alguns novos administradores de sistemas haviam atrapalhado a permissão e a propriedade, com as quais eu consertei:
(Estou acostumado a precisar
chmod 0600 ~/.ssh/* ; chmod 0644 ~/.ssh/*.pub
mas a verificação / localização de permissões de root pelo sshd é nova para mim.) Agora vou procurar um rootkit e, em seguida, limpe e reinstale de qualquer maneira.fonte
No meu caso, os problemas estavam com o shell exec incorreto.
Arquivo / etc / passwd alterado para esse usuário
fonte
Eu tive esse problema no CentOS 7. Eu sou um usuário comum do Linux baseado no Debian, então eu era um peixe fora d'água. Percebi que em alguns servidores funcionou e em apenas um não. O audit.log não disse nada de útil e o secure.log também não deu nada. Eu descobri que a única diferença real eram algumas diferenças de contexto de segurança em arquivos e diretórios entre aqueles que funcionavam e os que não funcionavam. Obtenha segurança com
sudo ls -laZ <user-home>/.ssh
do diretório (estou assumindo muitos padrões no sshd_config).
Você deve ver alguns
ssh_home_t
euser_home_t
atributos. Caso contrário, use ochcon
comando para adicionar os atributos ausentes.Por exemplo
No meu caso, minha suspeita é que o usuário tenha sido criado de maneira não padrão. Sua casa era um diretório em
/var/lib
.Mais informações em: https://www.linuxquestions.org/questions/linux-security-4/selinux-preventing-ssh-login-with-~-ssh-authorized_keys-4175469538/
fonte
No nosso caso, os problemas estavam relacionados ao fato de que nossas regras de firewall e NATing não foram configuradas corretamente.
porta 22, estava sendo direcionada para o servidor incorreto onde nossas chaves e usuário não estavam sendo reconhecidos.
Se alguém chegar a esse ponto. tcpdump e telnet podem ser seus amigos
Você notará que esses dois servidores possuem versões openssh diferentes. Isso me ajudou a identificar o problema rapidamente. Se seus hosts estiverem usando as mesmas versões ssh, você deverá tentar fazer um rastreamento compactado no destino para verificar se o tráfego está chegando ao destino.
O ssh pode gerar muito tráfego, o que dificulta o tcpdump out para encontrar o que você está procurando.
Isso me ajudou
Tente telnetar a partir de um servidor 3 diferente do seu computador atual @ [mylocalip]. Você deseja ver qual tráfego realmente chega ao seu servidor.
fonte