Insira a senha SSH uma vez

101

Antes do upgrade

Quando estava executando git clone git@... (usando ssh) uma vez por reinicialização do computador, uma caixa de diálogo de janela foi exibida 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é o próximo início do meu sistema.

Depois de atualizar para 13.10

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

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

... toda vez que clonar um repositório git, isso aparece.

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

    
por Ionică Bizău 20.10.2013 / 08:32

7 respostas

118
  

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

     

link

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

Como corrigir

Corrigi isso inserindo os seguintes comandos:

$ ssh-agent bash

Isso cria um novo processo bash que permite adicionar chaves privadas. Ao adicionar uma nova chave privada, você será solicitado a inserir a senha toda vez.

E então:

$ 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 username é seu nome de usuário. Você pode fazer o mesmo usando $USER variable:

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

Como alternativa, use apenas ~ no seu diretório pessoal.

$ ssh-add ~/.ssh/id_rsa

E o problema foi corrigido.

    
por Ionică Bizău 20.10.2013 / 08:41
26

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

Basta adicionar esses valores ao seu arquivo .bashrc :

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 armazena em cache. Você não precisa entrar sempre.

    
O
por Arda 10.06.2015 / 11:07
22

0) Resposta curta

Adicione sua linha .ssh/config one no começo:

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

Em primeiro lugar, verifique se a sua versão do ssh deve ser maior que igual a 7.2 :

ssh -V

2) Edite o arquivo de configuração

Se for o caso, basta adicionar sua linha .ssh/config one no começo:

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 encontrar nenhuma linha que contenha, será necessário carregá-lo executando:

eval $(ssh-agent)

Observe que isso ativa o agente apenas no terminal atual, portanto, para ativá-lo em todos os lugares, você pode tentar adicionar essa linha no arquivo ~/.profile e reinicializar.

    
por tobiasBora 25.11.2016 / 19:32
20

Uma solução alternativa para este bug é adicionar o seguinte à parte inferior de ~/.bashrc

eval 'gnome-keyring-daemon --start'
    
por Alex Collins 28.02.2014 / 21:52
3

Os usuários do fish shell podem usar este 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
    
por Daniel Gerber 07.09.2015 / 13:53
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
    
por Carlos Silva 07.10.2015 / 11:00
0

Se você usar o arquivo .ppk do azure

Basta convertê-lo para 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>
    
por GrvTyagi 25.05.2016 / 08:49