Digite a senha SSH uma vez


124

Antes da atualização

Quando eu estava executando git clone git@...(usando ssh) uma vez por reinicialização do computador, apareceu uma caixa de diálogo da janela contendo uma caixa de texto para inserir minha senha SSH e confirmada com OK. Então, a senha não era mais necessária até a próxima inicialização do meu sistema.

Após a atualização para 13.10

Após a atualização para o Ubuntu 13.10, essa janela não aparece mais, mas uma mensagem no terminal aparece:

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

... sempre que a clonagem de um repositório git é exibida.

Como posso consertar isso? Quero inserir minha senha apenas uma vez.


11
Eu acho que você tem que usar o ssh-addcomando para isso. Tentaste?
Devius # 20/13

2
Eu tentei ssh-agent bash+ ssh-add. Isso funciona apenas por alguns minutos.
Jonic Biz 20/10/2013

Estou tendo o mesmo problema, afinal. Eu acho que pode ser um conflito entre o ssh-agent do OpenSSH e o Gnome Keyring Daemon.
Devius # dev13


2
Adicionar AddKeysToAgent yesa .ssh / config funciona para mim.
precisa saber é o seguinte

Respostas:


138

Atualização: parece ser um bug da 13.10:

https://bugs.launchpad.net/ubuntu/+source/libpam-ssh/+bug/1247169


De qualquer forma, executando os seguintes comandos, o problema foi corrigido para mim:

Como consertar

Corrigi isso inserindo os seguintes comandos:

$ ssh-agent bash

Isso cria um novo processo de bash que permite adicionar chaves privadas. Ao adicionar uma nova chave privada, a senha será solicitada uma e apenas uma vez.

E depois:

$ ssh-add /home/username/.ssh/id_rsa
Enter passphrase for /home/username/.ssh/id_rsa: 
Identity added: /home/username/.ssh/id_rsa (/home/username/.ssh/id_rsa)

... onde usernameestá seu nome de usuário. Você pode fazer o mesmo usando a $USERvariável:

$ ssh-add /home/$USER/.ssh/id_rsa

Como alternativa, basta usar o ~seu diretório pessoal.

$ ssh-add ~/.ssh/id_rsa

E o problema foi resolvido.


48
Isso não resolve o problema. Ele apenas adiciona a identidade ao agente até você sair do terminal. Se você abrir um novo terminal, precisará ssh-addnovamente.
Devius 11/11

@ devius Sim, parece ser um bug. Mas, os comandos acima fixo meu problema ...
Ionică Bizau

3
Então, para esclarecer: Com essa "correção", você não precisará digitar a senha novamente nesse terminal novamente. No momento em que você abrir um novo terminal - terá que fornecer a senha novamente.
harijay

9
Eu tentei $ ssh-add /home/username/.ssh/id_rsa(sem ssh-agent bash) e funcionou para mim mesmo depois de reabrir o terminal. Mas a solução completa para mim foi essa stackoverflow.com/a/4246809/532252 . Tudo está ok, mesmo após a reinicialização da máquina.
Kishie

11
Eu apenas digitei ssh-add no terminal. Não há necessidade de mudar para o ssh-agente bash ou especificar um arquivo id_rsa
henry74

39

0) Resposta curta

Adicione sua .ssh/configúnica linha no início:

AddKeysToAgent yes

e execute git / ssh / ... Se não for suficiente, verifique sua versão do ssh e verifique se o ssh-agent está carregado com estas instruções:

1) Verifique a versão do openssh

Primeiro verifique se a sua versão ssh deve ser maior que 7.2 :

ssh -V

2) Edite o arquivo de configuração

Se for o caso, basta adicionar .ssh/configuma linha no início:

AddKeysToAgent yes

3) Verifique se o ssh-agent já está aberto

Normalmente, as distribuições carregam automaticamente um agente ssh. Para verificar, execute

ps aux | grep -v grep | grep ssh-agent

Se você não vir nenhuma linha que a contenha, precisará carregá-la executando:

eval $(ssh-agent)

Observe que isso habilita o agente apenas no terminal atual; portanto, para habilitá-lo em qualquer lugar, você pode tentar adicionar esta linha ao seu ~/.profilearquivo e reiniciar.


11
AddKeysToAgent yesé a resposta canônica pós-2016 - e exatamente o que a maioria dos usuários modernos espera. É meados de 2017. O Ubuntu> = 16.04 ( Xenial Xerus ) agora é uma suposição razoável. A maioria das instalações OpenSSH em estado selvagem agora suporta essa opção. Os julgamentos ad-hoc do script de shell do tipo defendido por todas as outras respostas a esta pergunta são tão ... passados . </sigh>
Cecil Curry

2
Esta deve ser a resposta aceita
simernes

32

Este documento Atlassian corrigiu o problema para mim no Ubuntu 14.04 Server Edition:

Basta adicionar esses valores ao seu .bashrcarquivo:

SSH_ENV=$HOME/.ssh/environment

# start the ssh-agent
function start_agent {
    echo "Initializing new SSH agent..."
    # spawn ssh-agent
    /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
    echo succeeded
    chmod 600 "${SSH_ENV}"
    . "${SSH_ENV}" > /dev/null
    /usr/bin/ssh-add
}

if [ -f "${SSH_ENV}" ]; then
     . "${SSH_ENV}" > /dev/null
     ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
        start_agent;
    }
else
    start_agent;
fi

E após o login, ele solicita a senha apenas uma vez e faz o cache. Você não precisa inseri-lo toda vez.


2
Isso parece funcionar em outras distros, como se eu tivesse usado com sucesso essa resposta no Sabayon Linux.
BH2017

11
Obrigado! Esta solução funcionou para mim em um sistema ubuntu onde o gnome-keyring-daemon não funcionou devido a problemas no dbus-daemon. Especificamente, eu estava recebendo esses erros "** Mensagem: não foi possível conectar-se ao barramento de sessão do dbus: Não foi possível iniciar automaticamente um dbus-daemon sem um $ DISPLAY para X11" e depois de definir a variável de ambiente de exibição, obtive "** Mensagem: couldn conecte-se ao barramento de sessão do dbus: // bin / dbus-launch terminou de forma anormal com o seguinte erro: Erro de inicialização automática: falha na inicialização do X11. "
user207863

11
Isso precisa de mais votos, corrige o problema no Ubuntu 16.04 virtualizado.
Niels Keurentjes

3
Isso corrige o problema para mim no Bash para Windows também. Tentei iniciar o Bash várias vezes e ele lembrou a senha. Ainda não tentei reiniciar.
Amr

2
depois de tentar todas as outras soluções, isso funcionou para mim. Esta deve ser a solução para o OP
João Pimentel Ferreira

20

Uma solução alternativa para esse bug é adicionar o seguinte na parte inferior do~/.bashrc

eval `gnome-keyring-daemon --start`

2
O chaveiro do gnomo não deve fazer parte da sua sessão?
Pavel Šimerda 30/11

11
Se você está falando 'deve', então Esta questão não deve estar aqui em primeiro lugar, se tudo é que perfeito
Anwar

11
Não tenho certeza se isso pertence .bashrc. Parece que você tem que adicioná-lo em algum arquivo de perfil DE
Dmitry Ginzburg

3

Os usuários do shell de peixe podem usar esse script para fazer a mesma coisa.

# content has to be in .config/fish/config.fish
# if it does not exist, create the file
setenv SSH_ENV $HOME/.ssh/environment

function start_agent                                                                                                                                                                    
    echo "Initializing new SSH agent ..."
    ssh-agent -c | sed 's/^echo/#echo/' > $SSH_ENV
    echo "succeeded"
    chmod 600 $SSH_ENV 
    . $SSH_ENV > /dev/null
    ssh-add
end

function test_identities                                                                                                                                                                
    ssh-add -l | grep "The agent has no identities" > /dev/null
    if [ $status -eq 0 ]
        ssh-add
        if [ $status -eq 2 ]
            start_agent
        end
    end
end

if [ -n "$SSH_AGENT_PID" ] 
    ps -ef | grep $SSH_AGENT_PID | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    end  
else
    if [ -f $SSH_ENV ]
        . $SSH_ENV > /dev/null
    end  
    ps -ef | grep $SSH_AGENT_PID | grep -v grep | grep ssh-agent > /dev/null
    if [ $status -eq 0 ]
        test_identities
    else 
        start_agent
    end  
end

0

Eu uso isso:

vim ~/.profile

eval `/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg`
export SSH_AUTH_SOCK
export GPG_AGENT_INFO

0

Se você usar o arquivo .ppk azul

Basta convertê-lo em pem e adicionar permissão 400 com etapas simples:

sudo apt-get install putty
puttygen <path_to_key>/keyname.ppk -O private-openssh -o <path>/aws_key.pem
sudo chmod 400 <path>/aws_key.pem
ssh -vi aws_key.pem ubuntu@<ip_address>

0

No Ubuntu 18.04, o ssh-agent é iniciado quando a sessão X é aberta, é gerenciada no arquivo /etc/X11/Xsession.options:

# cat /etc/X11/Xsession.options
# $Id: Xsession.options 189 2005-06-11 00:04:27Z branden $
#
# configuration options for /etc/X11/Xsession
# See Xsession.options(5) for an explanation of the available options.
allow-failsafe
allow-user-resources
allow-user-xsession
use-ssh-agent
use-session-dbus
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.