Zadejte SSH heslo jednou

105

Před upgradem

Když jsem spustilgit clone git@... (pomocí ssh) po restartu počítače, objevil se dialogové okno obsahující textové pole pro vložení hesla SSH a potvrzeno pomocí OK. Potřebná hesla se již nepotřebovala až do dalšího spuštění mého systému.

Po upgradu na 13.10

Po upgradu na Ubuntu 13.10 se okno již neobjeví, ale objeví se zpráva v terminálu:

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

... pokaždé, když se klonuje do git repozitáře, objeví se to.

Jak mohu to napravit? Chci zadat svou přístupovou frázi pouze jednou.

    
dané Ionică Bizău 20.10.2013 08:32

7 odpovědí

120
  

Aktualizace: Zdá se, že je chyba od 13.10:

     

Odkaz

Každopádně s následujícími příkazy byl problém pro mě opraven:

Jak opravit

Opravil jsem to zadáním následujících příkazů:

$ ssh-agent bash

Tím vytvoříte nový proces bash, který umožňuje přidávat soukromé klíče. Při přidávání nového soukromého klíče budete vyzváni k zadání hesla jednou a pouze jednou.

A pak:

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

... kdeusername je vaše uživatelské jméno. Stejně můžete provést i proměnnou$USER:

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

Alternativně stačí použít~ pro váš domovský adresář.

$ ssh-add ~/.ssh/id_rsa

A problém byl opraven.

    
odpověděl Ionică Bizău 20.10.2013 08:41
27

Tento dokument Atlassian opravil problém pro mě na Ubuntu 14.04 Server Edition:

Stačí přidat tyto hodnoty do souboru.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

A po přihlášení se heslo pokusí pouze jednou a uloží se do mezipaměti. Nemusíte jej zadávat pokaždé.

    
odpověděl Arda 10.06.2015 11:07
23

0) Krátká odpověď

Na začátku přidejte svůj řádek.ssh/config:

AddKeysToAgent yes

a spusťte příkaz git / ssh / ... Pokud to nestačí, zkontrolujte verzi ssh a zkontrolujte, zda je ssh-agent načten tyto instrukce:

1) Zkontrolujte verzi openssh

Nejprve zkontrolujte, zda je vaše ssh verze, musí být větší než 7,2 :

ssh -V

2) Upravte konfigurační soubor

Pokud tomu tak je, přidejte na začátek řádku.ssh/config:

AddKeysToAgent yes

3) Zkontrolujte, zda je ssh-agent již otevřený

Obvykle distribuce automaticky načtou ssh-agenta. Chcete-li to zkontrolovat, spusťte

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

Pokud nevidíte žádný řádek, který jej obsahuje, musíte jej načíst spuštěním:

eval $(ssh-agent)

Všimněte si, že to umožňuje agenta pouze na aktuálním terminálu, takže ho můžete povolit všude, můžete se pokusit přidat tento řádek do souboru~/.profile a restartovat.

    
odpověděl tobiasBora 25.11.2016 19:32
20

Řešení pro tuto chybu přidá dole následující z~/.bashrc

eval 'gnome-keyring-daemon --start'
    
odpověděl Alex Collins 28.02.2014 21:52
3

Uživatelé shellu mohou tuto skript , abyste provedli totéž.

# 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
    
odpověděl Daniel Gerber 07.09.2015 13:53
0

Používám toto:

vim ~/.profile

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

Pokud používáte blbý soubor .ppk

Stačí ji převést na pem a přidat oprávnění 400 pomocí jednoduchých kroků:

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>
    
odpověděl GrvTyagi 25.05.2016 08:49