Як експортувати відкритий ключ мого SSH?


12

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

Однак я не можу зрозуміти, звідки SSH-сервер використовує свою конфігурацію.

bash-2.05# ssh -V
Sun_SSH_1.1, SSH protocols 1.5/2.0, OpenSSL 0x0090700f

У мене є файл файлів сертифікатів у / etc / ssh / та ~ / .ssh /. Я можу знайти лише один конфігураційний файл для SSH, і він знаходиться в / etc / ssh / ssh_config, але він не містить даних (все коментується).

Хтось знає, як я можу дізнатися, де зберігається сертифікат, або як його експортувати, щоб я міг перенести його на інший сервер? Я сподівався, що конфігураційні файли дадуть мені відповідь, але вони мало допомагають.

Відповіді:


17

Якщо припустити, що ви маєте на увазі автентифікацію відкритого ключа на рівні користувача за допомогою "сертифіката", і ви створили їх, використовуючи ssh-keygenрозташування за замовчуванням, вони повинні знаходитись там, де їх знайде ваш ssh-клієнт. Ключ складається з приватної частини, яка зазвичай зберігається в ~/.ssh/id_rsaі публічної частини в ~/.ssh/id_rsa.pub. Останню, як правило, потрібно буде перенести на віддалений сервер, як правило, на ~/.ssh/authorized_keys.

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

Зауважте, що /etc/ssh/ssh_configце для клієнта. На сервері вам доведеться подивитися /etc/ssh/sshd_config. У вашому налаштуванні обидва сервери будуть служити як ssh-клієнтом, так і ssh-сервером, тому вам доведеться переглянути обидва файли з обох кінців.


Зрозуміло. Дякую. Єдине, що мені довелося зробити додатково, було у мого клієнта, я повинен був вказати параметр -i (особистість), що вказує на приватний ключ.
Кріс Дейл

2

Потрібно знайти відкритий ключ ssh для користувача, який буде користувачем для входу в сценарій.

Наприклад, якщо у мене є serverA і serverB, я б зробив наступне.

sudo adduser scriptrunner
...
sudo su - scriptrunner
ssh-keygen
...
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3Nza...... scriptrunner@serverA

потім зробіть щось подібне на ServerB

Потім на серверіA закрутіть відкритий ключ користувача scriptrunner сервераBB /home/scriptrunner/.ssh/authorized_keys

і зробіть навпаки на serverB (використовуючи scriptArnener користувача serverA у вповноважених /home/scriptrunner/.ssh/authorized_keysключах на серверіB)

Тоді ви повинні мати можливість робити ssh scriptrunner@serverAз serverB за допомогою ключа, і навпаки.

Ви також можете використовувати ssh-copy-idбіт санкціонованих_кілей.


1

Щоб встановити ssh-з'єднання з аутентифікацією відкритого ключа, користувачеві, який ініціює з'єднання, потрібно мати пару відкритих / приватних ключів. У багатьох дистрибутивах Linux ці ключі не генеруються за замовчуванням, і їх потрібно генерувати сам користувач (або адміністратор від свого імені).

Якщо ви ввійшли як відповідний користувач, перейдіть до своєї домашньої директорії та запустіть

ssh-keygen

Прийміть всі параметри за замовчуванням, і нова пара ключів буде створена в ~ / .ssh / id_rsa та ~ / .ssh / id_rsa.pub. Тепер скопіюйте відкритий ключ та вставте його у файл ~ / .ssh / санкціонований_кейс облікового запису цільового користувача на цільовій машині. Потім увімкніть автентифікацію відкритих ключів на цільовій машині (в / etc / ssh / sshd_config), і вам слід добре пройти.

ПРИМІТКА. У цьому процесі існує багато можливих підводних каменів, коли ви це робите вперше. Усі дозволи повинні бути правильними, а файли повинні знаходитись у потрібних місцях. Це, ймовірно , краще за все, якщо ви будете слідувати HowTo , як цей .

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