Immettere la passphrase SSH una volta

103

Prima dell'aggiornamento

Quando stavo correndo git clone git@... (usando ssh) una volta per riavvio del computer appariva una finestra di dialogo contenente una casella di testo per l'inserimento della passphrase SSH e confermata con OK. Quindi la passphrase non era più necessaria fino al prossimo avvio del mio sistema.

Dopo l'aggiornamento a 13.10

Dopo l'aggiornamento a Ubuntu 13.10 quella finestra non appare più ma appare un messaggio nel terminale:

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

... ogni volta che si clona un repository git questo appare.

Come posso risolvere questo problema? Voglio inserire la mia passphrase solo una volta.

    
posta Ionică Bizău 20.10.2013 - 08:32
fonte

7 risposte

119
  

Aggiornamento: sembra un bug da 13.10:

     

link

Ad ogni modo, eseguendo i seguenti comandi, il problema è stato risolto per me:

Come risolvere

Ho risolto questo problema inserendo i seguenti comandi:

$ ssh-agent bash

Questo crea un nuovo processo bash che consente di aggiungere chiavi private. Quando aggiungi una nuova chiave privata ti verrà richiesta la passphrase una sola volta e solo una volta.

E poi:

$ 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)

... dove username è il tuo nome utente. Puoi fare lo stesso usando $USER variabile:

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

In alternativa, usa ~ per la tua home directory.

$ ssh-add ~/.ssh/id_rsa

E il problema è stato risolto.

    
risposta data Ionică Bizău 20.10.2013 - 08:41
fonte
27

Questo documento Atlassian ha risolto il problema per me su Ubuntu 14.04 Server Edition:

Aggiungi questi valori nel tuo file .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 dopo aver effettuato l'accesso, richiede una password solo una volta e memorizza nella cache. Non è necessario inserirlo ogni volta.

    
risposta data Arda 10.06.2015 - 11:07
fonte
22

0) Risposta breve

Aggiungi la tua .ssh/config di una riga all'inizio:

AddKeysToAgent yes

ed esegui git / ssh / ... Se non è abbastanza, controlla la tua versione ssh e controlla che ssh-agent sia caricato con queste istruzioni:

1) Controlla la versione di openssh

Prima di tutto controlla che la tua versione ssh, deve essere maggiore di uguale a 7.2 :

ssh -V

2) Modifica il file di configurazione

Se è il caso, aggiungi la tua .ssh/config una riga all'inizio:

AddKeysToAgent yes

3) Controlla se ssh-agent è già aperto

Solitamente le distribuzioni caricano automaticamente un agente ssh. Per controllarlo, esegui

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

Se non vedi alcuna riga che lo contiene, devi caricarlo eseguendo:

eval $(ssh-agent)

Nota che questo abilita l'agente solo sul terminale corrente, quindi per attivarlo ovunque, puoi provare ad aggiungere questa linea nel tuo file ~/.profile e riavviare.

    
risposta data tobiasBora 25.11.2016 - 19:32
fonte
20

Una soluzione alternativa per questo bug è di aggiungere quanto segue alla fine di ~/.bashrc

eval 'gnome-keyring-daemon --start'
    
risposta data Alex Collins 28.02.2014 - 21:52
fonte
3

Gli utenti della fish shell possono utilizzare questo script per fare la stessa cosa.

# 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
    
risposta data Daniel Gerber 07.09.2015 - 13:53
fonte
0

Io uso questo:

vim ~/.profile

eval '/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg'
export SSH_AUTH_SOCK
export GPG_AGENT_INFO
    
risposta data Carlos Silva 07.10.2015 - 11:00
fonte
0

Se utilizzi il file .ppk azzurro

Basta convertirlo in pem e aggiungere l'autorizzazione 400 con semplici passaggi:

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>
    
risposta data GrvTyagi 25.05.2016 - 08:49
fonte

Leggi altre domande sui tag