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

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

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

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

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

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

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

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

153
задан 7 March 2018 в 05:05

8 ответов

Обновление: кажется, ошибка от 13,10:

https://bugs.launchpad.net/ubuntu / + source/libpam-ssh / + ошибка/1247169


Так или иначе выполнение следующих команд проблема было зафиксировано для меня:

Как зафиксировать

Я зафиксировал это путем ввода следующих команд:

$ ssh-agent 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

И проблема была решена.

138
ответ дан 7 March 2018 в 05:05

Этот документ Atlassian исправил проблему для меня в 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

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

0
ответ дан 7 March 2018 в 05:05

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

Добавляет в Вашем .ssh/config одна строка вначале:

AddKeysToAgent yes

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

1) Проверка openssh версия

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

ssh -V

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

, Если это имеет место просто, добавляет в Вашем .ssh/config одна строка вначале:

AddKeysToAgent yes

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

Usually, дистрибутивы автоматически загружают ssh-агент. Для проверки его работайте

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

, Если Вы не видите, что какая-либо строка содержит его, необходимо загрузить его путем выполнения:

eval $(ssh-agent)

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

0
ответ дан 7 March 2018 в 05:05

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

eval `gnome-keyring-daemon --start`
0
ответ дан 7 March 2018 в 05:05

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

# 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
0
ответ дан 7 March 2018 в 05:05

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

vim ~/.profile

eval `/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg`
export SSH_AUTH_SOCK
export GPG_AGENT_INFO
0
ответ дан 7 March 2018 в 05:05

Если вы используете 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>
0
ответ дан 7 March 2018 в 05:05

На Ubuntu 18.04 начат ssh-агент, когда сессия X открыта, ею управляют в файле/etc/x11/xsession.options:

# cat /etc/X11/Xsession.options
# $Id: Xsession.options 189 2005-06-11 00:04:27Z branden $
#
# configuration options for /etc/X11/Xsession
# See Xsession.options(5) for an explanation of the available options.
allow-failsafe
allow-user-resources
allow-user-xsession
use-ssh-agent
use-session-dbus
0
ответ дан 22 November 2019 в 22:56

Другие вопросы по тегам:

Похожие вопросы: