Como evitar digitar ssh-add toda vez

11

Li e segui algumas documentações on-line sobre como configurar um ssh-agent para não precisar digitar a senha toda vez que ssh em uma máquina remota.

No entanto, com a ajuda do ssh-agent , ainda preciso fazer ssh-addtoda vez que reinicio o shell. Em ssh-addseguida, solicita que eu digite a senha para desbloquear a chave privada.

Enter passphrase for key '/home/xx/.ssh/id_rsa':

Em vez de digitar minha senha da máquina remota, sou solicitado a digitar a senha da chave privada. É como sair de um purgatório e me encontrar em um inferno depois. Parece que o id_rsa foi adicionado apenas temporariamente ao ssh-agent em uma sessão , porque toda vez que faço login e digito ssh-add -l. Eu recebo:

The agent has no identities.

Posso perguntar como armazenar permanentemente a chave (id_rsa) no ssh-agent? obrigado

EDIT: foi com isso que fiz ssh-agent. Anexei o seguinte bloco em~/.bash_profile

SSHAGENT=/usr/bin/ssh-agent                                                                                        
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "SSHAGENT" ]; then
  eval `$SSHAGENT $SSHAGENTARGS`
  trap "kill $SSH_AGENT_PID" 0
fi
ssgao
fonte
Quer dizer que você deve digitar sua senha sempre que fizer login ou sempre que abrir uma janela do shell? Você diz que seguiu alguma documentação on-line, mas o ssh-agent funciona imediatamente no Ubuntu, então você não deveria ter nada para fazer. O que você fez exatamente?
Gilles 'SO- stop be evil'
Eu tenho que digitar a senha toda vez que faço uma conexão ssh na máquina remota. MAS não é a senha para acessar a máquina remota, é a senha para desbloquear minha chave privada (id_rsa).
ssgao
Eu sei que é a senha da sua chave. O que estou pedindo é o que você fez para configurar ssh-agente, e se correr ssh-addtem um efeito que dura mais tempo do que a janela do shell que você digitou.
Gilles 'SO parada sendo maus'
O efeito dura até eu sair do sistema (local). Coloquei o que fiz ssh-agentno post.
ssgao
Isso parece um comportamento normal: você precisa digitar sua senha uma vez por sessão para desbloquear a chave. Se a chave desbloqueada fosse armazenada em algum lugar, isso anularia o objetivo de ter uma frase secreta na chave - qualquer pessoa que obtivesse a chave desbloqueada armazenada poderia usá-la. Você estava esperando outra coisa? Deseja que a chave seja armazenada na memória após o logout, para que fique disponível até a próxima reinicialização?
Gilles 'SO- stop be evil'

Respostas:

6

Eu instalei o chaveiro.

sudo apt-get install chaveiro

Se você estiver executando o bash, precisará adicionar alguns comandos ao seu .bash_profile Se você não tiver um .bash_profile, crie um na sua pasta pessoal. Adicione estas linhas:

### START-Keychain ###
# Let  re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###

No início de um dia de trabalho, efetuarei login. Quando abro um terminal, minha senha será solicitada uma vez. Para todos os outros novos terminais e conexões, não será solicitada minha senha novamente.

walpha
fonte
4
como isso é diferente de digitar ssh-addno terminal?
ssgao
ya mas então u terá que digitar ssh-add toda ... fazendo isso irá cortar seus 2 passos -> eval "$ (ssh-agent)" e ssh-add
abhishek
1

O que você está procurando é menos seguro, mas pode ser realizado usando a autenticação de chave pública sem a necessidade do ssh-agent. Uma opção mais segura é usar a autenticação de chave pública com uma senha e desativar a autenticação de senha no servidor ssh, mas não é isso que você solicitou. Consulte o link na parte inferior desta resposta para obter instruções, se você decidir fazer isso.

Para usar o ssh sem ser solicitada uma senha, você precisa gerar seu par de chaves enquanto deixa o campo da senha em branco.

Para verificar se você já gerou um par de chaves, verifique os arquivos id_rsa e id_rsa.pub no diretório ~ / .ssh. Se eles já estiverem lá, você pode excluí-los ou movê-los para criar um novo par de chaves.

Observe que, se você excluí-los, perderá o acesso a qualquer servidor ssh que estiver usando e, em seguida, chaves antigas para autenticar se a autenticação por senha estiver desativada no servidor.

Para criar um novo par de chaves, execute o seguinte comando:

ssh-keygen -t rsa

Aceite o local padrão para as chaves e deixe a senha em branco.

Para fornecer sua chave pública ao servidor ssh ao qual você deseja se conectar, use o seguinte comando:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remotehost

Após concluir essas etapas, você poderá efetuar login no servidor remoto sem uma senha do computador que está usando.

Referência: http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh-made-easy/

Omegamormegil
fonte
0

Algum tempo atrás, de repente, comecei a ser solicitada uma senha para desbloquear minha chave ssh ao fazer isso git push. Aconteceu que, para deixar de ser solicitada uma senha, basta adicionar o SSH Key Agent (GNOME Keyring: SSH Agent) aos aplicativos de inicialização (no meu caso - apenas para marcar a caixa de seleção):

insira a descrição da imagem aqui

Alexey
fonte
Você poderia expandir sua resposta com mais detalhes sobre como fazer isso e por que isso resolveria o problema em questão? Obrigado.
Byte Commander