Wpisz hasło SSH raz

102

Przed aktualizacją

Kiedy uruchamiałem git clone git@... (używając ssh) raz po każdym uruchomieniu komputera pojawiło się okno dialogowe zawierające pole tekstowe do wstawienia mojego hasła SSH i potwierdzone za pomocą OK. Następnie hasło nie było już potrzebne do następnego uruchomienia mojego systemu.

Po aktualizacji do 13.10

Po uaktualnieniu do systemu Ubuntu 13.10 to okno nie jest już wyświetlane, ale pojawia się komunikat w terminalu:

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

... za każdym razem, gdy klonujesz repozytorium git, pojawia się to.

Jak mogę to naprawić? Chcę wprowadzić hasło tylko raz.

    
zadawane Ionică Bizău 20.10.2013, 08:32
źródło

7 odpowiedzi

117
  

Aktualizacja: wydaje się być błędem z 13.10:

     

link

W każdym razie, wykonując następujące polecenia, problem został rozwiązany dla mnie:

Jak naprawić

Naprawiłem to, wprowadzając następujące polecenia:

$ ssh-agent bash

To tworzy nowy proces bash, który pozwala dodawać klucze prywatne. Podczas dodawania nowego klucza prywatnego zostaniesz poproszony o podanie hasła tylko raz i tylko raz.

A następnie:

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

... gdzie username to Twoja nazwa użytkownika. Możesz zrobić to samo, używając zmiennej $USER :

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

Alternatywnie, po prostu użyj ~ dla twojego katalogu domowego.

$ ssh-add ~/.ssh/id_rsa

Problem został rozwiązany.

    
odpowiedział Ionică Bizău 20.10.2013, 08:41
źródło
27

Ten dokument Atlassian naprawił problem dla mnie w Ubuntu 14.04 Server Edition:

Po prostu dodaj te wartości do pliku .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

Po zalogowaniu się prosi o hasło tylko raz i buforuje. Nie musisz go wpisywać za każdym razem.

    
odpowiedział Arda 10.06.2015, 11:07
źródło
22

0) Krótka odpowiedź

Dodaj w .ssh/config jedną linię na początku:

AddKeysToAgent yes

i uruchom git / ssh / ... Jeśli to nie wystarczy, sprawdź wersję ssh i sprawdź, czy ssh-agent jest załadowany tymi instrukcjami:

1) Sprawdź wersję openssh

Najpierw sprawdź, czy twoja wersja ssh, musi być większa równa 7,2 :

ssh -V

2) Edytuj plik konfiguracyjny

Jeśli tak jest, po prostu dodaj na początku .ssh/config jedną linię na początku:

AddKeysToAgent yes

3) Sprawdź, czy ssh-agent jest już otwarty

Zazwyczaj dystrybucje automatycznie ładują ssh-agent. Aby to sprawdzić, uruchom

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

Jeśli nie widzisz żadnej linii zawierającej go, musisz załadować go, uruchamiając:

eval $(ssh-agent)

Zwróć uwagę, że to umożliwia agentowi tylko bieżący terminal, więc aby włączyć go wszędzie, możesz spróbować dodać tę linię do pliku ~/.profile i zrestartować.

    
odpowiedział tobiasBora 25.11.2016, 19:32
źródło
20

Obejście problemu tego błędu polega na dodaniu na dole poniższego z ~/.bashrc

eval 'gnome-keyring-daemon --start'
    
odpowiedział Alex Collins 28.02.2014, 21:52
źródło
3

Użytkownicy skorupy rybnej mogą używać tego skrypt , aby zrobić to samo.

# 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
    
odpowiedział Daniel Gerber 07.09.2015, 13:53
źródło
0

Używam tego:

vim ~/.profile

eval '/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg'
export SSH_AUTH_SOCK
export GPG_AGENT_INFO
    
odpowiedział Carlos Silva 07.10.2015, 11:00
źródło
0

Jeśli używasz pliku .ppk azure

Po prostu przekonwertuj go na pem i dodaj pozwolenie 400, wykonując proste kroki:

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>
    
odpowiedział GrvTyagi 25.05.2016, 08:49
źródło

Przeczytaj inne pytania na temat tagów