Як я можу назавжди зберегти захищений паролем ключ SSH?


9

Я використовую Awesome Window Manager

Як я можу назавжди додати приватні ключі з паролем?

Натхненний відповіддю тут, я додав приватні ключі в ~ / .ssh / config

Зміст ~ / .ssh / config:

IdentityFile 'private key full path'

Дозволи на ~ / .ssh / config: 0700

Але це не працює для мене.

Якщо я вручну додаю ключ під час кожного сеансу, він працює, але я шукаю більш елегантний спосіб (не в .bashrc)

Редагувати :

  • Використання класичної версії Gnome (без ефектів).

Після додавання ключа SSH ssh-copy-ifдо віддаленого хоста, під час входу я отримую таке підказку в терміналі ( термінал GNOME 3.0.1):

ssh -i .ssh/Password-Protected-Key user@host
Enter passphrase for key '.ssh/Password-Protected-Key':
  • Використання Awesome window window v3.4.10. Я вже gnome-keyring-dameonтаким чином убив інший pid і запустив gnome-keyring-daemon --start | grep SOCK(я також додав його в .profile) вихід (grep):

SSH_AUTH_SOCK=/tmp/keyring-2LXXXX/ssh

Я дотримувався таких же кроків, і я не маю жодного діалогового вікна графічного інтерфейсу ssh-add.

EDIT 2 :

Я створив новий захищений паролем ключ від віртуальної машини Ubuntu 11.10 на єдності, і досі не можу отримати жодне запит на пароль.

EDIT 3 : Схоже, що це не може працювати в Awesome window window :( та можливо інше ..


1
Який сенс додавати SSH-ключ, захищений паролем? Він перемагає мету ...
MarkovCh1

3
@Syzygy Ну чи завжди ви вводите паролі з різних служб і додатків чи використовуєте брелок, щоб розблокувати свій пароль паролем для входу?
pl1nk

Ще думки / запитання, pl1nk? Період пільги в Баунті закінчується НАДІЙСНО :-)
Останній

@izx Я перевірив усе, що ви згадали, і все, як очікувалося. Як я вже згадував, я також використовував Gnome. Чи потрібно подати помилку?
pl1nk

Ви могли б знайти деякі підказки тут . Схоже, важливий порядок, в якому починаються речі, і для gnome-keyring-демон важливий також.
Джон С Грубер

Відповіді:


2

Якщо ви використовуєте Unity або менеджер сеансів, який запускає gnome-keyring-daemon, ви можете просто використовувати Seahorse (паролі та ключі), щоб встановити ключ, визначити для чого це, встановити парольну фразу та поширити її відкритий ключ до комп'ютер, який ви збираєтеся використовувати з ssh. Не потрібні термінальні команди.

Ви створюєте пароль:

  1. вибравши Файл-> Створити та виберіть Захищений ключ оболонки. Натисніть Продовжити.

  2. Введіть описову назву та виберіть Create and set up.

  3. Вам буде запропоновано ввести ключову фразу двічі (другий раз, щоб перевірити, чи не ввели ви її перший раз.

  4. Введіть комп'ютер, на якому повинен бути відкритий ключ, та ім’я користувача на тому комп’ютері, для якого ви будете використовувати ключ. Відкритий ключ буде скопійовано на інший комп'ютер, в разі необхідності запропонуйте пароль на цьому комп’ютері.

Тепер на My Personal Keysвкладці відобразиться ключ.

Якщо припустити, що gnome-keyring-daemon запустився належним чином під час входу в Lightdm, і знову менеджером сеансу, коли ви вперше скористаєтеся ключем з ssh, вам буде запропоновано ввести ключову фразу. У цьому діалоговому вікні ви можете Detailsввести ключову фразу, вибрати керування та попросити розблокувати брелок, коли ви входите в систему - автоматично надаючи цей ключ. НатиснітьOK

Можливо, вам не буде запропоновано таким чином, якщо є інший ключ для входу на віддалений комп'ютер.

Після цього на першій вкладці Seahorse Passwordsз'явиться список "Unlock password password" для ключового імені. Клацніть на трикутник перед " Паролі: Логін", щоб побачити його.


Тож ця функціональність не працює з Awesome WM. Я хотів би продовжувати використовувати Awesome, тому я продовжуватиму використовувати своє вирішення.
pl1nk

19

Створення SSH-ключа, захищеного паролем, зберігається протягом сеансів та перезавантажень

Це, напевно, те, що ви хочете: введення ключової фрази один раз зробить її доступною назавжди під час кожного входу. Це буде працювати для більшості користувачів, які використовують настільні ПК Unity або Gnome.

  • Коли ви підключитесь після додавання відкритого ключа на віддалений сервер, ви отримаєте діалогове вікно інтерфейсу ssh-add:

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

  • Розгорніть "Деталі", натиснувши на трикутник, і ви отримаєте нижче. За замовчуванням - "блокувати брелок, коли я виходжу", що вимагає ввести пароль один раз на сеанс:

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

  • Змініть його на Автоматично розблокувати ... щоразу, коли я ввійдіть у систему , а це означає, що він працюватиме щоразу, коли ви увійшли до свого сеансу - це "контролюється" вашим паролем користувача. Він зберігатиметься через перезавантаження.

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

  • Введіть ключову фразу один раз, і це все - ключ засвідчується за допомогою первинного успішного входу в робоче середовище.


Якщо ви використовуєте AwesomeWM

Тестований із свіжою установкою AwesomeWM у свіжому користувальницькому

  • За замовчуванням AwesomeWM використовує ssh-agent:

    $ експорт | grep SSH
    оголосити -x SSH_AGENT_PID = "5479"
    оголосити -x SSH_AUTH_SOCK = "/ tmp / ssh-fWCKNnPq5440 / agent.5440"
    
  • Щоб переконатись у вищезазначених кроках, ви повинні використовувати gnome-keyring-daemonяк демон аутентифікації SSH, а не ssh-агент. Коли ви входите в систему за допомогою lightdm, PAM запускається, gnome-keyring-daemonякий намагатиметься розблокувати ключ для входу з вашим паролем для розблокування, але ви повинні додати до вас конфігурацію, щоб тримати його та використовувати його.

  • Додайте наступне до кінця ~/.xprofile:

      #! / бін / баш
      eval $ (gnome-keyring-daemon --start)
      експортувати SSH_AUTH_SOCK
      експортувати GNOME_KEYRING_PID
      експортувати GNOME_KEYRING_CONTROL
    

Команди у ~/.xprofileфайлі будуть виконуватись xsession перед запуском дивовижного диспетчера вікон та прив’язуватимуть його до gnome-keyring-daemon --loginпроцесу, розпочатого PAM через вищезазначені змінні середовища.

  • Поверніться до lightdm та увійдіть назад, і тепер, коли ви зробите це ssh user@host, вам слід отримати наведені вище спливаючі вікна - використовувати їх для розшифровки ваших приватних ключів у ~ / .ssh / та зберегти ваші приватні ключі до ключів входу в gnome-keyring.

Загальне рішення для будь-якого середовища вікна / робочого столу

  • це використовувати gnome-keyring-daemonзамість ssh-agent. Для цього вам потрібно працювати gnome-keyring-daemon і мати його ініціалізації і або зробити це після того, як ssh-agentзапускається або не починається ssh-agentвзагалі.

  • ssh(насправді ssh-add) вирішує, який агент автентифікації викликати на основі значення SSH_AUTH_SOCKзмінної середовища, яку можна перевірити, ввівшиexport | grep SOCK

  • це форма SSH_AUTH_SOCK=/tmp/ssh-MMFyVlI22130/agent.22130для ssh-агента (НЕ того, що ви хочете, щоб мати можливість зберегти свій ключ)

  • але форми SSH_AUTH_SOCK="/tmp/keyring-mEQB5g/ssh"для gnome-keyring-демон (який ви хочете)

  • тому перевірте значення та перевірте, чи працює ps aux | grep keyringцей gnome-keyring-демон , і якщо так, ініціалізуйте його з результатамиgnome-keyring-daemon --start

  • Ви можете перевірити пов'язані збережені ідентичності в консолі, ввівши ssh-add -l- якщо на ній не відображається "немає агента", ви помилилися налаштувати gnome-keyring-daemon.


Ну, я цього не бачив! Яку команду я можу використовувати або навіть краще, яку команду викликає цей діалог?
pl1nk

@izx при використанні цього потрібно використовувати ssh-add?
Джон С Грубер

@JohnSGruber Ні, доки приватні ключі ~/.sshне використовуються, використовувати не потрібно ssh-add- діалогове вікно з’явиться під час першого використання. Зауважте, що це працює лише в Unity / Gnome - я побачив у чаті, що ОП використовує AwesomeWM , де це не працює!
Іш

1
@ pl1nk: див. оновлене рішення для AwesomeWM наприкінці відповіді.
Останній

@izx - Дякую за загальну підтримку, перевірте моє оновлене запитання.
pl1nk

2

Вирішення проблеми - використання агента ssh. Вам просто потрібно розблокувати пароль свого ключа один раз, після чого він зберігається в пам'яті агентом і використовується автоматично

  • Створіть пара приватних / відкритих ключів за допомогою ssh-keygen -t dsa
  • Скопіюйте відкритий ключ на віддалену машину, зазвичай це ~ / .ssh / санкціоновані_кеї (використовуйте ssh-copy-idдля цього)
  • Запустіть ssh-addперед входом у віддалену систему, це попросить вашу парольну фразу і збереже її
  • Вхід у віддалену систему, пароль не потрібен

ssh-агент добре описаний у .net, наприклад тут:

Ще одна перевага ssh-агента полягає в тому, що якщо ви увійдете у віддалену систему, ssh -A user@domain.nameви можете далі сш із комп’ютера domain.name на третій комп'ютер, що містить ваш відкритий ключ, не копіюючи приватний ключ на комп'ютер domain.name (і він ніколи бачить ваш приватний ключ, лише разовий виклик / відповідь).


Як я можу це зробити? З інструкцій, які ви надіслали, незрозуміло. Більше того, це пов'язано з Ubuntu?
pl1nk

Я відредагував своє повідомлення з детальною інструкцією
Флойд

Ваше рішення зберігає пароль за сеанс, крім того, в моєму випадку, здається, це був конфлікт з gnome-keyring, як ви бачите в моїй відповіді.
pl1nk

@ pl1nk: значить, вам потрібно зберігати пароль протягом сеансів, тобто запитується лише один раз для кожного завантаження?
Останній

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

-1

ви можете використовувати

ssh-add 'filename or fullpath'

вам буде запропоновано пароль, якщо у вас є ключ

тоді ви можете з’єднатись із паролем


1
Як я вже згадував у своєму питанні, я шукаю більш елегантний спосіб.
pl1nk

-2

Якщо ви хочете працювати з приватними ключами, зробіть:

ssh-keygen -t rsa -N ''

Тоді:

Скопіюйте .ssh/id_rsa.pubв машину призначення .ssh/authorized_keysчерез scp

scp .ssh/id_rsa.pub user@remote_machine:~/.ssh/authorized_keys

Все зроблено.

Підключення до віддаленої машини без пароля:

ssh user@remote_machine

І у нас немає запиту про введення пароля.


Це буде постійно запитувати мене про ключовий пароль щоразу.
pl1nk

1
Можливо, тому, що при запуску ssh-keygen -t rsa -N '' ви ставите пароль. Отже, коли ви запускаєте вищезгадану команду, не вводите пароль, лише натисніть клавішу "ВВОД".
Octávio Filipe Gonçalves

Ну, я хотів би мати ключі з паролем. Я оновив своє запитання
pl1nk

1
Гаразд, я не розумію, чому ви хочете зробити це паролем. Зазвичай ця концепція використовується лише для встановлення з'єднань із віддаленими машинами, які можуть розпізнавати клієнтську машину без аутентифікації. Отже, якщо ви не хочете цього сценарію, вам потрібно лише виконати звичайне ssh-з'єднання. правильно?
Octávio Filipe Gonçalves

1
Розповідати людям скопіювати свій відкритий ключ на авторизовані ключі на віддаленій машині - це жорстока сила ... Набагато краще використовувати команду ssh-copy-id user @ remotemachine, яка буде вводити пароль у перший раз, а потім ДОДАТОК не перезаписувати ключ.
Флойд
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.