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


124

Перед оновленням

Коли я працював git clone git@...(використовуючи ssh) один раз за перезавантаження комп’ютера, з'явилося діалогове вікно, що містить текстове поле для вставки моєї парольної фрази SSH та підтверджено натисканням ОК. Тоді до наступного запуску моєї системи парольна фраза більше не потрібна.

Після оновлення до 13.10

Після оновлення до Ubuntu 13.10 це вікно більше не з’являється, але з'являється повідомлення в терміналі:

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

... щоразу при клонуванні сховища git це з'являється.

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


1
Я думаю, ви повинні використовувати для цього ssh-addкоманду. Ви пробували?
devius

2
Я спробував ssh-agent bash+ ssh-add. Це працює лише кілька хвилин.
Ionică Bizău

Зрештою, у мене така ж проблема. Я думаю, що це може бути конфлікт між ssh-агентом OpenSSH і демоном Gnome Keyring.
devius


2
Додати AddKeysToAgent yesдо .ssh / config працює для мене.
xslittlegrass

Відповіді:


138

Оновлення: здається, помилка з 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

І проблема була виправлена.


47
Це зовсім не вирішує проблему. Він додає особу агенту лише до того моменту, поки ви не вийдете з терміналу. Якщо ви відкриєте новий термінал, вам доведеться ssh-addзнову.
devius

@devius Так, здається, помилка. Але команди вище вирішили мою проблему ...
Ionică Bizău

3
Отже, щоб уточнити: за допомогою цього "виправлення" вам не доведеться знову вводити парольну фразу в цьому терміналі. Щойно ви відкриєте новий термінал - вам доведеться знову дати парольну фразу.
harijay

9
Я спробував $ ssh-add /home/username/.ssh/id_rsa(без ssh-agent bash), і це спрацювало для мене навіть після повторного відкриття терміналу. Але повним рішенням для мене став цей stackoverflow.com/a/4246809/532252 . Все нормально навіть після перезавантаження машини.
kishie

1
Я просто набрав ssh-add у терміналі. Не потрібно переходити на ssh-agent bash або вказувати файл id_rsa
henry74

39

0) Коротка відповідь

Додайте .ssh/configодин рядок на початку:

AddKeysToAgent yes

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

1) Перевірте відкриту версію

По-перше, перевірте, що ваша версія ssh, вона повинна бути більшою, що дорівнює 7,2 :

ssh -V

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

Якщо це так, просто .ssh/configна початку додайте один рядок:

AddKeysToAgent yes

3) Перевірте, чи ssh-агент уже відкритий

Зазвичай дистрибутиви автоматично завантажують ssh-агент. Щоб перевірити це, запустіть

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

Якщо ви не бачите жодного рядка, що містить його, вам потрібно завантажити його, виконавши:

eval $(ssh-agent)

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


11
AddKeysToAgent yes- це канонічна відповідь на період після 2016 року - і саме те, за що бавиться більшість сучасних користувачів. Середина 2017 року. Ubuntu> = 16,04 ( Xenial Xerus ) тепер обгрунтоване припущення. Більшість установок OpenSSH в дикій природі зараз підтримують цю опцію. Спеціальний скрипт оболонки такого типу, який виступає будь-яка інша відповідь на це питання, є таким ... пасе . </sigh>
Сесіль Карі

2
Це має бути прийнята відповідь
simernes

32

Цей документ Atlassian вирішив проблему для мене на серверній версії Ubuntu 14.04:

Просто додайте ці значення у свій .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

А після входу в систему він запитує пароль лише один раз, і він кешується. Вам не потрібно вводити його щоразу.


2
Здається, це працює і на інших дистрибутивах, як я щойно успішно використовував цю відповідь на Sabayon Linux.
BH2017

1
Дякую! Це рішення працювало для мене в системі ubuntu, де gnome-keyring-демон не працював через проблеми з dbus-daemon. Зокрема, я отримував ці помилки "** Повідомлення: не вдалося підключитися до шини сеансу dbus: Не вдалося автозапустити dbus-демон без $ DISPLAY для X11", і після встановлення змінної середовища відображення я отримав "** Повідомлення: не міг 'не підключатися до шини сеансу dbus: // bin / dbus-start припиняється аномально із наступною помилкою: Помилка автоматичного запуску: помилка ініціалізації X11. "
користувач207863

1
Це потребує більшої кількості оновлень, виправляє проблему на віртуалізованому Ubuntu 16.04 штрафу.
Niels Keurentjes

3
Це вирішує проблему і для мене на Bash для Windows. Я кілька разів намагався запустити Bash, і він запам'ятав пароль. Ще не спробував перезавантажити.
Amr

2
перепробувавши всі інші рішення, це працювало для мене. Це повинно бути вирішенням ОП
Жоао Піментел Феррейра

20

Вирішення цієї помилки полягає в тому, щоб додати наступне до нижньої частини сторінки~/.bashrc

eval `gnome-keyring-daemon --start`

2
Чи не повинен ключі з ключем gnome просто бути частиною вашого сеансу?
Павло Шімерда

1
Якщо ви говорите про "слід", то це питання не повинно бути тут на першому місці, якщо все так ідеально
Анвар

1
Не впевнений, чи належить це .bashrc. Схоже, ви повинні додати його до файлу профілю DE
Дмитро Гінзбург

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

0

Я використовую це:

vim ~/.profile

eval `/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gpg`
export SSH_AUTH_SOCK
export GPG_AGENT_INFO

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>

0

У 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.