Eu configurei uma pequena caixa Linux há alguns meses e configurei o login ssh sem senha para meu ID de usuário pessoal e um ID de conta de serviço. Isso está funcionando bem para ambos. Armazenei os arquivos de chave privada/pública da conta de serviço no mesmo local em que armazenei as chaves do meu ID de usuário pessoal, na caixa do cliente.
Estou usando o seguinte como meu guia básico:http://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/.
Hoje montei uma segunda caixa, pretendendo configurá-la da mesma forma. Não tive problemas para fazê-lo funcionar com meu ID de usuário pessoal. No entanto, ainda não funciona para a conta de serviço, mas não entendo o porquê. Quando tento fazer o ssh com a conta de serviço na segunda caixa, ele solicita a senha e me permite entrar.
Verifiquei que a chave pública da conta de serviço está inserida no arquivo ~/.ssh/authorized_keys em ambas as caixas e o valor da chave é o mesmo em ambas as caixas.
Verifiquei que ~/.ssh tem permissões de 700 e que ~/.ssh/authorized_keys tem permissões de 600 (também testei com 640, que é o que li como o valor recomendado). Verifiquei isso em ambas as caixas, no diretório inicial da conta de serviço.
Observe que o ID de usuário numérico da conta de serviço é diferente nas duas caixas. Eu não acho que isso faria alguma diferença.
Observo também que depois de fazer ssh para qualquer caixa com a conta de serviço, se eu tentar fazer ssh para a OUTRA caixa daquela, usando a conta de serviço, ele solicitará uma senha.
Preciso fazer algo com "known_hosts" ou algo mais?
Atualizar:
Conforme recomendado, tentei executar o ssh com "-v" e inspecionar a saída da tentativa do ssh.
Esta é a saída, com algumas elisões:
% ssh -v [email protected]
OpenSSH_7.2p2, OpenSSL 1.0.2h 3 May 2016
debug1: Reading configuration data /home/myuserid/.ssh/config
debug1: /home/myuserid/.ssh/config line 2: Applying options for *
debug1: Connecting to targethost.com [...] port 22.
debug1: Connection established.
debug1: identity file /home/myuserid/.ssh/id_rsa type 1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_dsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ecdsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ecdsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ed25519 type -1
debug1: key_load_public: No such file or directory
debug1: identity file /home/myuserid/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_7.2
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
debug1: Authenticating to targethost.com:22 as 'serviceaccountid'
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
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
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:...
debug1: Host 'targethost.com' is known and matches the ECDSA host key.
debug1: Found key in /home/myuserid/.ssh/known_hosts:18
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: rekey after 134217728 blocks
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/myuserid/.ssh/id_rsa
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/myuserid/.ssh/id_dsa
debug1: Trying private key: /home/myuserid/.ssh/id_ecdsa
debug1: Trying private key: /home/myuserid/.ssh/id_ed25519
debug1: Next authentication method: password
[email protected]'s password:
Acho curioso que nas últimas linhas, após "Próximo método de autenticação: publickey", as referências do caminho do arquivo sejam para "/home/myuserid", e não para "/home/serviceaccountid". Isso parece uma grande pista.
Responder1
Não consigo adicionar comentários à minha conta, mas sou apenas eu tentando aprender mais para ajudar a solucionar problemas.
Parece que você tem três computadores, um local e dois remotos. E cada um deles tem duas contas com as quais você está trabalhando?
Se você tiver uma conta pessoal e de serviço na máquina local e executar ssh service@remote-2
a partir da conta pessoal em sua máquina local, ele encontrará apenas chaves ssh para sua conta pessoal local, não para a conta de serviço. adicionei a chave pública pessoal local ao arquivo de chaves autorizadas da conta de serviço remoto.
Acho curioso que nas últimas linhas, após "Próximo método de autenticação: publickey", as referências do caminho do arquivo sejam para "/home/myuserid", e não para "/home/serviceaccountid". Isso parece uma grande pista.
Isso é ssh procurando por chaves na conta local. Deve ser o diretório inicial de qualquer conta da qual você está chamando o ssh. Se você espera que esse caminho seja o início de uma conta de serviço, será necessário fazer login na conta de serviço eentãoexecute ssh.