Vraag Voer eenmaal de SSH-wachtwoordzin in


Voor de upgrade

Toen ik rende git clone git@... (met behulp van SSH) eenmaal per computer opnieuw te starten, verscheen een dialoogvenster dat een tekstvak bevat voor het invoegen van mijn SSH-wachtwoordzin en bevestigd met OK. Dan was de wachtwoordzin niet langer nodig tot de volgende start van mijn systeem.

Na het upgraden naar 13.10

Na het upgraden naar Ubuntu 13.10 verschijnt dat venster niet meer maar verschijnt er een bericht in terminal:

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

... elke keer wanneer er een git-repository wordt gekloond, wordt dit weergegeven.

Hoe kan ik dit oplossen? Ik wil mijn wachtwoord maar één keer invoeren.


105
2017-10-20 06:32


oorsprong


Ik denk dat je de ssh-add commando daarvoor. Heb je het geprobeerd? - devius
Ik heb geprobeerd ssh-agent bash + ssh-add. Dat werkt maar een paar minuten. - Ionică Bizău
Ik heb toch hetzelfde probleem. Ik denk dat het een conflict kan zijn tussen de SSH-agent van OpenSSH en de Gnome Keyring Daemon. - devius
Gerelateerde bug: bugs.launchpad.net/ubuntu/+source/libpam-ssh/+bug/1247169 - devius
Toevoegen AddKeysToAgent yes naar .ssh / config werkt voor mij. - xslittlegrass


antwoorden:


Update: lijkt een bug te zijn van 13.10:

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


In ieder geval met de volgende commando's was het probleem voor mij opgelost:

Hoe te repareren

Ik heb dit opgelost door de volgende opdrachten in te voeren:

$ ssh-agent bash

Hiermee wordt een nieuw bash-proces gemaakt waarmee u privésleutels kunt toevoegen. Wanneer u een nieuwe privésleutel toevoegt, wordt u eenmaal en slechts één keer om de wachtwoordzin gevraagd.

En dan:

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

...waar username is je gebruikersnaam. Je kunt hetzelfde doen met $USER variabele:

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

Als alternatief, gewoon gebruiken ~ voor je thuismap.

$ ssh-add ~/.ssh/id_rsa

En het probleem was verholpen.


120
2017-10-20 06:41



Dit lost het probleem helemaal niet op. Het voegt alleen de identiteit toe aan de agent totdat u de terminal verlaat. Als u een nieuwe terminal opent, moet u dit doen ssh-add nog een keer. - devius
@devius Ja, lijkt een fout te zijn. Maar de bovenstaande commando's hebben mijn probleem opgelost ... - Ionică Bizău
Dus om te verduidelijken: met deze "fix" hoeft u de wachtwoordzin van die terminal niet meer opnieuw in te voeren. Op het moment dat u een nieuwe terminal opent, moet u de wachtwoordzin opnieuw opgeven. - harijay
Ik heb geprobeerd $ ssh-add /home/username/.ssh/id_rsa (zonder ssh-agent bash) en het werkte voor mij zelfs na het heropenen van de terminal. Maar de complete oplossing voor mij was deze stackoverflow.com/a/4246809/532252. Alles is in orde, zelfs na het opnieuw opstarten van de machine. - kishie
Ik heb ssh-add net in de terminal getypt. U hoeft niet over te schakelen naar ssh-agent bash of een id_rsa-bestand op te geven - henry74


Dit Atlassian-document heeft het probleem voor mij opgelost op Ubuntu 14.04 Server Edition:

Voeg deze waarden gewoon toe aan uw .bashrc het dossier:

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

En na het inloggen vraagt ​​het slechts één keer om een ​​wachtwoord en het slaat in de cache. U hoeft het niet elke keer in te voeren.


27
2018-06-10 09:07



Dit lijkt te werken op andere distributies, zoals ik dit antwoord met succes heb gebruikt op Sabayon Linux. - BH2017
Bedankt! Deze oplossing werkte voor mij op een ubuntu-systeem waarbij de gnome-keyring-daemon niet werkte vanwege problemen met dbus-daemon. Specifiek kreeg ik deze fouten "** Bericht: kon geen verbinding maken met de dbus-sessieautomaat: Kon een dbus-daemon niet automatisch starten zonder $ DISPLAY voor X11" en na het instellen van de omgevingsvariabele voor de weergave kreeg ik "** Bericht: couldn geen verbinding met de dbus-sessiebus: // bin / dbus-launch is abnormaal afgesloten met de volgende fout: Fout bij automatisch starten: X11-initialisatie mislukt. " - user207863
Dit vereist meer upvotes, lost het probleem op gevirtualiseerde Ubuntu 16.04 prima op. - Niels Keurentjes
Dit lost het probleem voor mij ook op Bash voor Windows op. Ik heb geprobeerd om Bash meerdere keren te starten en het herinnerde de wachtwoordzin. Heb nog geen herstart geprobeerd. - Amr
na het proberen van alle andere oplossingen, werkte dit voor mij. Dit zou de oplossing voor het OP moeten zijn - João Pimentel Ferreira


0) Kort antwoord

Voeg uw toe .ssh/config één regel aan het begin:

AddKeysToAgent yes

en voer git / ssh / ... uit. Als dit niet genoeg is, controleer dan je ssh-versie en controleer of deze ssh-agent met deze instructies is geladen:

1) Controleer de openssh-versie

Controleer eerst of je ssh-versie, het moet zijn groter gelijk aan 7.2:

ssh -V

2) Bewerk het configuratiebestand

Als het het geval is, voegt u gewoon uw .ssh/config één regel aan het begin:

AddKeysToAgent yes

3) Controleer of ssh-agent al open is

Meestal laden distributies automatisch een ssh-agent. Om het te controleren, uitvoeren

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

Als u geen regel ziet die deze bevat, moet u deze laden door het volgende uit te voeren:

eval $(ssh-agent)

Merk op dat dit de agent alleen op de huidige terminal inschakelt, dus om deze overal in te schakelen, kunt u proberen deze regel toe te voegen aan uw ~/.profile bestand en opnieuw opstarten.


23
2017-11-25 18:32



AddKeysToAgent yes is het canonieke antwoord na 2016 - en precies waar de meeste moderne gebruikers om geven. Het is medio 2017. Ubuntu> = 16.04 (Xenial Xerus) is nu een redelijke veronderstelling. De meeste OpenSSH-installaties in het wild ondersteunen deze optie nu. Ad-hoc-shellscript-kloosies zoals door elk ander antwoord op deze vraag wordt bepleit, zijn zo ... passé. </sigh> - Cecil Curry


Een oplossing voor deze bug is om het volgende toe te voegen onderaan ~/.bashrc

eval `gnome-keyring-daemon --start`

20
2018-02-28 20:52



Moet gnome keyring niet gewoon deel uitmaken van je sessie? - Pavel Šimerda
Als je het hebt over 'zou moeten', dan zou deze vraag niet op de eerste plaats moeten staan, als alles zo perfect is - Anwar
Ik weet niet zeker of dit hoort .bashrc. Het lijkt erop dat je het in een of ander DE-profielbestand moet toevoegen - Dmitry Ginzburg


Gebruikers van de vissen schaal kan dit gebruiken script om hetzelfde te doen.

# 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

3
2017-09-07 11:53





Ik gebruik dit:

vim ~/.profile

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

0
2017-10-07 09:00





Als u het azure.ppk-bestand gebruikt

Converteer het eenvoudig naar pem en voeg toestemming 400 toe met eenvoudige stappen:

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
2018-05-25 06:49