Як мені назавжди додати посвідчення для SSH?


37

Мені потрібно запускати ssh-add <key>кожен раз, коли мені потрібно перейти на веб-сервер. Чи є спосіб додати ідентифікатор назавжди, тому мені не потрібно продовжувати додавати посвідчення під час кожного входу?

EDIT: Ключ - це файл pem, який я завантажив із хмарної служби.

Відповіді:


40

Створіть свій ключ, як звичайний:, ssh-keygenпотім помістіть цей ключ на віддалений сервер ssh-copy-id, який синхронізує його з прийнятими на віддаленому сервері ключами.

ssh-keygen
ssh-copy-id user@host

Тут буде запропоновано ввести пароль, а потім виконати всі дії, необхідні для з'єднання вашого .pubключа з віддаленим сервером SSH.

За замовчуванням він скопіює всі ваші ключі .pub на віддалений сервер. Якщо ви тільки що створили свій ключ, ssh-keygenтоді це не проблема (адже у вас є лише такий!). Однак якщо у вас є кілька клавіш, ви можете скопіювати лише певний ключ із -iпрапором.

ssh-copy-id -i ~.ssh/key_name.pub user@host

Заміна key_name.pubімені ключа.


4
Для когось, як я (або запитувача, який задає запитання), чий єдиний вплив ssh використовує його для доступу до хмарних серверів, де веб-сервіс створює ключ і дає мені (у моєму випадку AWS-сервери), ця відповідь важко відповісти зрозуміти, не роблячи значних фонових досліджень. Я ніколи не використовував ssh-keygenабо ssh-copy-id, наприклад. З іншого боку, відповіді на зразок цієї ідеально зрозумілі та корисні для мене, враховуючи рівень моїх знань. Від вас залежить, чи хочете ви будь-яким чином налаштувати свою відповідь, щоб допомогти таким невідомим людям, як я. :)
Марк Амері

Відповідь передбачає, що я хочу створити новий ключ. Що робити, якщо я хочу просто зареєструвати існуючий ключ за допомогою keyring?
donquixote

@donquixote: див. відповідь нижче від користувача626052.
naught101

7

Ви можете створити ключ ssh за допомогою команди:

ssh-keygen

Потім ви можете скопіювати свій ключ на сервер за допомогою:

ssh serveruser@servername "echo `cat ~/.ssh/id_dsa.pub` >> ~/.ssh/authorized_keys" 

Тепер ви можете автоматично увійти у свій веб-сервер


1
Щоб скопіювати ключ на сервер, ви можете просто скористатися ssh-copy-id -i ~/.ssh/id_dsa.pub serveruser@servernameабо ~/.ssh/id_rsa.pubвідповідно. Насправді, якщо ви використовуєте ім'я за замовчуванням для файлу ключа, його навіть не потрібно вказувати.
Карстен Тієль

5

помістіть це у своє ~/.bashrc

eval $(ssh-agent)
ssh-add ~/.ssh/where_ever_privake_key_is 

3
Це єдина відповідь, яка фактично відповідає на питання. Інші лише додають відкритий ключ за замовчуванням до одного цільового сервера, що дратує, якщо у вас є два + окремі для різних наборів серверів.
naught101

3

Якщо ваш ключ не захищений паролем і названий одним із файлів, який ssh ​​буде намагатися шукати при ідентифікації ( ~/.ssh/id_dsaабо ~/.ssh/id_rsa), вам не доведеться додавати його до свого агента.

АЛЕ Якщо є найменша можливість викрадення цих файлів, ви просто дозволили б будь-кому отримати доступ до серверів, на яких ви використовуєте цю особу. Словом, pwned.

IMHO, приватні ключі без паролів - це погана практика, і їх слід використовувати лише в середовищах, де ~/.ssh/authorized_keysце дуже обмежувальне значення.


1
ssh-agent може зберігати ваш розшифрований приватний ключ, поки ви ввійшли в систему. Якщо це включено, gnome-keyring може навіть використовувати ваш пароль для входу. О, і ssh-copy-id теж може скопіювати ваш відкритий ключ на сервери.
Френк

2

Напишіть короткий скрипт оболонки, який запустить ssh-add, а потім підключіться, наприклад:

ssh-add ~/.ssh/your-key
ssh user@remotehost

Потім ви можете запустити ssh у свій хост за допомогою однієї команди.


1

Для AWS завантажте ключ pem та запустіть:

ssh-add /path/to/pemfile.pem

Це працювало для мене, ubuntu 18.04. Джерело , нічого іншого не потрібно було.

NB : Однак важливо встановити дозволи до 400, перш ніж робити це.

chmod 400 /path/to/pemfile.pem

Якщо ні, ви отримаєте помилку:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @
УВАГА! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ Дозволи 0664 для '/home/toing_toing/blablabla.pem' занадто відкриті. Потрібно, щоб файли вашого приватного ключа НЕ були доступні іншим. Цей приватний ключ буде проігноровано.



-2

Ви говорите про Amazon Cloud? У своєму ~ / .bashrc створіть змінні середовища:

# Amazon
export EC2_PRIVATE_KEY=$HOME/Keys/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export EC2_CERT=$HOME/Keys/cert-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

так, я говорю про хмару, але це пара ключів, щоб ssh в екземпляр, і вищевказані змінні середовища необхідні для використання api-інструментів :)
theTuxRacer

Добре. Отже, генеруйте ключ RSA без пароля: 'ssh-keygen -t rsa', а потім з'єднайте згенерований відкритий ключ (~ / .ssh / id_dsa.pub) у файл ~ / .ssh / санкціонований_кейс віддаленого сервера. Багатолінійку для досягнення цього дали багато.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.