Як уникнути введення ssh-add кожного разу


11

Я читав та дотримувався деякої онлайн-документації про те, як налаштувати ssh-агент, щоб мені не потрібно було вводити пароль кожен раз, коли я ssh на віддаленій машині.

Однак за допомогою ssh-агента мені все одно потрібно робити ssh-addщоразу, коли я перезавантажую оболонку. ssh-addПотім просить мене ввести ключову фразу , щоб розблокувати секретний ключ.

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

Замість того, щоб вводити свій пароль для віддаленої машини, мене просять ввести пароль для приватного ключа. Це як вийти з чистилища і опинився згодом у пеклі. Схоже, що id_rsa лише тимчасово додається до ssh-агента під час сеансу , тому що кожного разу, коли я входжу в систему та ввожу його ssh-add -l. Я отримав:

The agent has no identities.

Чи можу я запитати, як постійно зберігати ключ (id_rsa) в ssh-agent? Спасибі

EDIT: це те, що я зробив ssh-agent. Я додав наступний блок до~/.bash_profile

SSHAGENT=/usr/bin/ssh-agent                                                                                        
SSHAGENTARGS="-s"
if [ -z "$SSH_AUTH_SOCK" -a -x "SSHAGENT" ]; then
  eval `$SSHAGENT $SSHAGENTARGS`
  trap "kill $SSH_AGENT_PID" 0
fi

Ви маєте на увазі, що вам потрібно вводити свою парольну фразу щоразу, коли ви входите або кожен раз, коли ви відкриваєте вікно оболонки? Ви кажете, що дотримувались документації в Інтернеті, але ssh-агент працює на Ubuntu, тому у вас не повинно було нічого робити. Що ти точно робив?
Жил "ТАК - перестань бути злим"

Мені доводиться набирати парольну фразу кожного разу, коли я впадаю в віддалену машину. АЛЕ це не пароль для доступу до віддаленої машини, це парольна фраза для розблокування мого приватного ключа (id_rsa).
ssgao

Я знаю, що це парольна фраза вашого ключа. Те , що я питаю, що ви зробили , щоб налаштувати SSH-агент, і запущена чи ssh-addмає ефект , який триває довше , ніж вікно оболонки , що ви ввели його.
Жиля SO- перестати бути злим »

Ефект триває, поки я не вийду із системи (локальна). Я поклав те, що робив з ssh-agentпосадою.
ssgao

Це звучить як нормальна поведінка: вам потрібно вводити свою парольну фразу один раз на сеанс, щоб розблокувати ключ. Якщо розблокований ключ десь був збережений, це перешкоджає меті наявності парольної фрази на ключі - кожен, хто отримує збережений розблокований ключ, може використовувати його. Ви очікували чогось іншого? Ви хочете, щоб ключ зберігався в пам'яті після виходу, щоб він був доступний до наступного перезавантаження?
Жил "ТАК - перестань бути злим"

Відповіді:


6

Я встановив брелок.

sudo apt-get install брелок

Якщо ви використовуєте bash, вам потрібно додати кілька команд у свій .bash_profile Якщо у вас немає .bash_profile, створіть його у своїй домашній папці. Додайте ці рядки:

### START-Keychain ###
# Let  re-use ssh-agent and/or gpg-agent between logins
/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh
### End-Keychain ###

На початку робочого дня я ввійду в систему. Коли я відкрию термінал, мені буде запропоновано один раз отримати мою парольну фразу. Для всіх інших нових терміналів і з'єднань мене більше не запитують про свою парольну фразу.


4
чим це відрізняється від набору тексту ssh-addв терміналі?
ssgao

ya, але тоді вам доведеться вводити ssh-add кожен раз ... це дозволить вирізати ваші 2 кроки -> eval "$ (ssh-agent)" і ssh-add
abhishek

1

Те, що ви шукаєте, менш захищене, але це може бути здійснено за допомогою аутентифікації відкритого ключа без необхідності використання ssh-агента. Більш безпечним варіантом є використання автентифікації відкритого ключа із парольною фразою під час відключення автентифікації паролів на ssh сервері, але це не те, про що ви просили. Дивіться посилання внизу цієї відповіді для інструкцій, якщо ви вирішили це зробити замість цього.

Щоб використовувати ssh, не запитуючи жодної парольної фрази, вам потрібно створити ключ, залишаючи поле пароля порожнім.

Щоб перевірити, чи ви вже створили ключ, перевірте, чи є файли id_rsa та id_rsa.pub у каталозі ~ / .ssh. Якщо вони вже є, ви можете їх видалити або перемістити, щоб створити нове ключове слово.

Зауважте, якщо ви видалите їх, ви втратите доступ до будь-яких серверів ssh, якими ви користуєтесь, тоді старі ключі для аутентифікації, якщо автентифікація пароля вимкнена на сервері.

Щоб створити новий ключ, виконайте таку команду:

ssh-keygen -t rsa

Прийміть розташування клавіш за замовчуванням і залиште парольну фразу порожньою.

Щоб надати відкритий ключ до ssh-сервера, до якого ви хочете підключитися, скористайтеся такою командою:

ssh-copy-id -i ~/.ssh/id_rsa.pub username@remotehost

Виконавши ці дії, ви зможете увійти на віддалений сервер без пароля з комп’ютера, який ви використовуєте.

Довідка: http://tombuntu.com/index.php/2008/02/20/public-key-authentication-for-ssh-made-easy/


0

Деякий час тому мене раптом почали просити парольну фразу, щоб розблокувати свій ssh ​​ключ під час виконання git push. Виявилося, що для того, щоб перестати просити парольну фразу, достатньо було додати SSH Key Agent (GNOME Keyring: SSH Agent) до запуску програм (у моєму випадку - лише встановити прапорець):

введіть тут опис зображення


Чи можете ви, будь ласка, розширити свою відповідь детальніше про те, як це зробити і чому це вирішить проблему? Спасибі.
Байт-командир
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.