продолжайте получать запрос на пароль rsa, даже если ключи были обменены с сервером [duplicate]

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

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

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

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

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

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

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

105
задан 7 March 2018 в 06:05

14 ответов

Обновление: похоже, ошибка от 13.10: https://bugs.launchpad.net/ubuntu/+source/libpam-ssh/+bug/1247169

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

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

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

$ 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

И проблема была исправлена. [ ! d12]

118
ответ дан 17 July 2018 в 19:23
Обновление: похоже, ошибка от 13.10: https://bugs.launchpad.net/ubuntu/+source/libpam-ssh/+bug/1247169

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

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

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

$ 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

И проблема была исправлена. [ ! d12]

117
ответ дан 23 July 2018 в 20:08

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

eval `gnome-keyring-daemon --start`
20
ответ дан 17 July 2018 в 19:23

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

# 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
ответ дан 17 July 2018 в 19:23

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

vim ~/.profile eval `/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg` export SSH_AUTH_SOCK export GPG_AGENT_INFO
0
ответ дан 17 July 2018 в 19:23

Если вы используете файл 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
ответ дан 17 July 2018 в 19:23

Этот документ в 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

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

26
ответ дан 17 July 2018 в 19:23

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

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

AddKeysToAgent yes

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

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

Сначала проверьте, что ваша версия ssh, она должна быть больше равной 7.2:

ssh -V

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

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

AddKeysToAgent yes

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

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

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

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

eval $(ssh-agent)

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

22
ответ дан 17 July 2018 в 19:23

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

eval `gnome-keyring-daemon --start`
20
ответ дан 23 July 2018 в 20:08
  • 1
    Разве гнома не может быть частью вашей сессии? – Pavel Šimerda 30 November 2014 в 19:09
  • 2
    Если вы говорите о «нужно», тогда этот вопрос не должен быть здесь на первом месте, если все это прекрасно – Anwar 8 May 2016 в 20:35
  • 3
    Не уверен, что это принадлежит .bashrc. Похоже, вы должны добавить его в какой-нибудь файл профиля DE – Dmitry Ginzburg 7 November 2016 в 11:48

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

# 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
ответ дан 23 July 2018 в 20:08

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

vim ~/.profile eval `/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg` export SSH_AUTH_SOCK export GPG_AGENT_INFO
0
ответ дан 23 July 2018 в 20:08

Если вы используете файл 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
ответ дан 23 July 2018 в 20:08

Этот документ в 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

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

27
ответ дан 23 July 2018 в 20:08
  • 1
    Кажется, это работает на других дистрибутивах, например, я просто успешно использовал этот ответ на Sabayon Linux. – BH2017 20 November 2015 в 09:08
  • 2
    Благодаря! Это решение работало для меня в системе ubuntu, где gnome-keyring-daemon не работал из-за проблем с dbus-daemon. В частности, я получал эти ошибки. ** Сообщение: не удалось подключиться к шине сеанса dbus: невозможно выполнить автозапуск dbus-демона без $ DISPLAY для X11 & quot; и после установки переменной среды отображения я получил «** Сообщение: не удалось подключиться к шине сеанса dbus: // bin / dbus-запуск завершен ненормально со следующей ошибкой: Ошибка автозагрузки: неудачная инициализация X11. & quot; – user207863 26 February 2016 в 21:05
  • 3
    Это требует большего количества оборотов, устраняет проблему с виртуализированным Ubuntu 16.04. – Niels Keurentjes 1 August 2016 в 00:35
  • 4
    Это исправляет проблему для меня и в Bash для Windows. Я попытался запустить Bash несколько раз, и он вспомнил парольную фразу. Еще не пробовал перезапустить. – Amr 27 November 2016 в 08:53
  • 5
    попробовав все другие решения, это сработало для меня. Это должно быть решением для ОП – João Pimentel Ferreira 14 August 2017 в 22:23

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

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

AddKeysToAgent yes

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

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

Сначала проверьте, что ваша версия ssh, она должна быть больше равной 7.2:

ssh -V

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

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

AddKeysToAgent yes

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

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

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

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

eval $(ssh-agent)

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

22
ответ дан 23 July 2018 в 20:08
  • 1
    AddKeysToAgent yes является каноническим ответом после 2016 года - и точно , о чем говорят большинство современных пользователей. Это в середине 2017 года. Ubuntu & gt; = 16.04 ( Xenial Xerus ) теперь является разумным предположением. Большинство установок OpenSSH в дикой природе теперь поддерживают эту опцию. Ad-hoc shell clludges, которые поддерживаются каждым другим ответом на этот вопрос, так ... passé . [F2] – Cecil Curry 16 August 2017 в 07:16

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

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