Einmalige Eingabe der SSH-Passphrase

102

Vor dem Upgrade

Wenn ich git clone git@... (mit ssh) einmal pro Computer ausgeführt habe, habe ich einen Fensterdialog mit einem Textfeld zum Einfügen meiner SSH-Passphrase geöffnet und mit OK bestätigt. Dann wurde die Passphrase bis zum nächsten Start meines Systems nicht mehr benötigt.

Nach dem Upgrade auf 13.10

Nach dem Upgrade auf Ubuntu 13.10 erscheint dieses Fenster nicht mehr, aber eine Nachricht im Terminal erscheint:

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

... erscheint jedes Mal, wenn ein Git-Repository geklont wird.

Wie kann ich das beheben? Ich möchte meine Passphrase nur einmal eingeben.

    
Ionică Bizău 20.10.2013, 08:32
quelle

7 Antworten

117
  

Update: scheint ein Fehler von 13.10 zu sein:

     

Pfandrecht

Wie auch immer die folgenden Befehle ausgeführt wurden, das Problem wurde für mich behoben:

Wie behebe ich

?

Ich habe das durch Eingabe der folgenden Befehle behoben:

$ ssh-agent bash

Dies erstellt einen neuen Bash-Prozess, mit dem Sie private Schlüssel hinzufügen können. Wenn Sie einen neuen privaten Schlüssel hinzufügen, werden Sie einmalig und einmalig zur Eingabe der Passphrase aufgefordert.

Und dann:

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

... wobei username dein Benutzername ist. Sie können dasselbe mit $USER variable tun:

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

Alternativ verwenden Sie einfach ~ für Ihr Home-Verzeichnis.

$ ssh-add ~/.ssh/id_rsa

Und das Problem wurde behoben.

    
Ionică Bizău 20.10.2013, 08:41
quelle
27

Dieses Atlassian-Dokument hat das Problem für mich unter Ubuntu 14.04 Server Edition behoben:

>

Fügen Sie diese Werte einfach in Ihre .bashrc -Datei ein:

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

Und nach dem Login fragt es nur einmal nach dem Passwort und es wird zwischengespeichert. Sie müssen es nicht jedes Mal eingeben.

    
Arda 10.06.2015 11:07
quelle
22

0) Kurze Antwort

Fügen Sie in Ihrem .ssh/config eine Zeile am Anfang hinzu:

AddKeysToAgent yes

und rit git / ssh / ... Wenn es nicht genug ist, überprüfen Sie Ihre ssh-Version und überprüfen Sie, dass ssh-agent mit diesen Anweisungen geladen ist:

1) Überprüfen Sie die openssh Version

Stellen Sie zunächst sicher, dass Ihre ssh-Version größer als 7.2 lautet :

ssh -V

2) Bearbeiten Sie die Konfigurationsdatei

Wenn das der Fall ist, füge einfach in deinem .ssh/config eine Zeile am Anfang hinzu:

AddKeysToAgent yes

3) Überprüfen Sie, ob der ssh-agent bereits geöffnet ist

Normalerweise laden Distributionen automatisch einen ssh-Agenten. Um es zu überprüfen, führen Sie

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

Wenn Sie keine Zeile sehen, die es enthält, müssen Sie es laden, indem Sie Folgendes ausführen:

eval $(ssh-agent)

Beachten Sie, dass dies den Agenten nur auf dem aktuellen Terminal aktiviert. Um es überall zu aktivieren, können Sie also versuchen, diese Zeile in Ihrer ~/.profile -Datei hinzuzufügen und neu zu starten.

    
tobiasBora 25.11.2016 19:32
quelle
20

Eine Umgehungslösung für diesen Fehler besteht darin, Folgendes am Ende hinzuzufügen von ~/.bashrc

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

Benutzer der Fisch-Shell können diese verwenden Skript , um das Gleiche zu tun.

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

Ich benutze das:

vim ~/.profile

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

Wenn Sie eine azure .ppk-Datei verwenden

Konvertieren Sie es einfach in pem und fügen Sie die Berechtigung 400 mit einfachen Schritten hinzu:

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>
    
GrvTyagi 25.05.2016 08:49
quelle

Tags und Links