ssh-add não tem efeito

3

Estou tentando adicionar acesso ssh sem senha ao meu Mac OS X 10.8.3 que atua como um servidor. Eu segui instruções como esta:

link

Mas quando eu faço ssh [email protected] eu ainda recebo a senha.

Depois de analisar:

link

Quando faço o ssh-add na máquina do meu cliente, obtenho:

[michael@varga (Sun May 26 09:56:32) ~]% ssh-add
Enter passphrase for /Users/michael/.ssh/id_rsa: 

MAS quando tentei usar o comando ssh-add no comando-lin no servidor e ele simplesmente não faz nada:

[michael@maz (Sun May 26 10:00:25) ~]% ssh-add
[michael@maz (Sun May 26 10:01:03) ~]% ssh-add -K 

Acho que isso pode ter alguma coisa a ver com o problema que estou tendo com isso, ainda exigindo que eu forneça a senha.

Alguma sugestão de como corrigir o ssh-add?

    
por maz 26.05.2013 / 16:12

2 respostas

3

Você não precisa executar ssh-add ou ssh-agent no seu servidor.

Você deve executar ssh-agent no seu cliente ( varga ). Isso criará um soquete para o programa ssh verificar uma chave desbloqueada. ssh-agent imprimirá algumas variáveis de ambiente que você terá que definir - normalmente você faz isso com eval $(ssh-agent) , que inicia o agente e exporta todas as variáveis necessárias.

Como posso ver na sua pergunta, ssh-add pede uma senha e adiciona a chave ao agente, o que significa que o agente está em execução e todas essas variáveis são exportadas (pelo menos no shell que você está usando para executar %código%). Mas agora para fazer ssh-add ver o agente, você tem que se certificar de que essas variáveis também são exportadas na sessão em que você executa ssh .

O fato de que ssh não está pedindo a senha quando você a executa no servidor significa que o agente está sendo executado no servidor (você não precisa dele) e simplesmente não há chaves para adicionar, por isso sai silenciosamente.

Por que ssh-add no cliente está solicitando a senha? Provavelmente porque você adicionou uma chave errada ao agente. Tem certeza de que você pode efetuar login no servidor usando o arquivo-chave ? Você tem certeza de que quando você tenta fazer o login ele está pedindo a senha do arquivo-chave , e não uma senha de usuário normal? Certifique-se de que a autenticação por chave eletrônica esteja funcionando primeiro.

    
por 26.05.2013 / 16:36
2

Eu estou supondo uma de duas coisas.

Você não tem um agente ssh em execução no servidor. Para verificar se você tem um agente ssh em execução no servidor, veja se a variável de ambiente SSH_AUTH_SOCK está definida:

echo $SSH_AUTH_SOCK

Outra possibilidade é que você tenha entendido mal como os keypairs do ssh devem funcionar. Você instalou sua chave pública no servidor? Se você tiver ssh-copy-id disponível, isso é muito simples. No cliente:

ssh-copy-id user@server

Se não, você precisa inserir o conteúdo de ~ / .ssh / id_rsa.pub no cliente em ~ / .ssh / authorized_keys no servidor. Por exemplo. (supondo que você não tenha outras chaves definidas no servidor):

scp ~/.ssh/id_rsa.pub user@server:.ssh/authorized_keys
ssh user@server chmod 0600 .ssh/authorized_keys

Uma forma de diagnosticar isso é executar ssh com saída detalhada:

ssh -v user@host

Ele deve mostrar que os pares de chaves podem ser usados para autenticação:

debug1: Authentications that can continue: publickey,password

Que ele realmente tente autenticar usando uma chave:

debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/$user/.ssh/id_rsa

E que a autenticação de chave pública é bem-sucedida:

debug1: Authentication succeeded (publickey).
    
por 26.05.2013 / 16:25