Введите парольную фразу SSH один раз

93

Перед обновлением

Когда я запускал git clone git@... (используя ssh) один раз за перезагрузку компьютера, появилось диалоговое окно с текстовым полем для ввода моей кодовой фразы SSH и подтверждено с помощью OK. Затем кодовая фраза больше не требовалась до следующего запуска моей системы.

После обновления до 13.10

После обновления до Ubuntu 13.10 это окно больше не отображается, но появляется сообщение в терминале:

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

... каждый раз при клонировании репозитория git это появляется.

Как я могу это исправить? Я хочу ввести кодовую фразу только один раз.

    
задан Ionică Bizău 20.10.2013 в 08:32
источник

7 ответов

109
  

Обновление: похоже, ошибка от 13.10:

     

Ссылка

В любом случае, для меня были решены следующие команды:

Как исправить

Я исправил это, введя следующие команды:

$ ssh-agent bash

Это создает новый процесс bash, который позволяет вам добавлять личные ключи. При добавлении нового закрытого ключа вам будет предложено ввести парольную фразу один раз и только один раз.

И затем:

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

... где username - ваше имя пользователя. Вы можете сделать то же самое с помощью переменной $USER :

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

В качестве альтернативы просто используйте ~ для своего домашнего каталога.

$ ssh-add ~/.ssh/id_rsa

И проблема была исправлена.

    
ответ дан Ionică Bizău 20.10.2013 в 08:41
источник
23

Этот атласский документ исправил проблему для меня в Ubuntu 14.04 Server Edition:

Просто добавьте эти значения в файл .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

И после входа в систему он запрашивает пароль только один раз, и он кэширует. Вам не нужно вводить его каждый раз.

    
ответ дан Arda 10.06.2015 в 11:07
источник
20

Обходной путь для этой ошибки заключается в следующем: ~/.bashrc

eval 'gnome-keyring-daemon --start'
    
ответ дан Alex Collins 28.02.2014 в 21:52
источник
15

0) Короткий ответ

Добавьте в свою .ssh/config одну строку в начале:

AddKeysToAgent yes

и запустите git / ssh / ... Если этого недостаточно, проверьте свою версию ssh и убедитесь, что ssh-agent загружен этими инструкциями:

1) Проверьте версию openssh

Во-первых, проверьте, что ваша версия ssh должна быть больше, чем 7.2 :

ssh -V

2) Отредактируйте конфигурационный файл

Если это так, просто добавьте в свою .ssh/config одну строку в начале:

AddKeysToAgent yes

3) Проверьте, открыт ли ssh-агент

Обычно дистрибутивы автоматически загружают ssh-agent. Чтобы проверить его, запустите

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

Если вы не видите строку, содержащую ее, вам нужно загрузить ее, запустив:

eval $(ssh-agent)

Обратите внимание, что это активирует агент только на текущем терминале, поэтому, чтобы включить его повсюду, вы можете попробовать добавить эту строку в файл ~/.profile и перезагрузиться.

    
ответ дан tobiasBora 25.11.2016 в 19:32
источник
3

Пользователи оболочки рыбы могут использовать этот скрипт , чтобы сделать то же самое.

# 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
источник
0

Я использую это:

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
источник
0

Если вы используете файл azure .ppk

Просто преобразуйте его в pem и добавьте разрешение 400 с помощью простых шагов:

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
источник

Ознакомьтесь с другими вопросами по меткам