Как экспортировать открытый ключ моего 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 выведите открытый ключ пользователя scriptBunner serverB в /home/scriptrunner/.ssh/authorized_keys

и сделайте обратное на сервере В (используя пользователя scriptRunner на сервере А в ключе authorized_keys /home/scriptrunner/.ssh/authorized_keysна сервере В)

Тогда вы должны быть в состоянии сделать ssh scriptrunner@serverAс сервера B с помощью ключа, и наоборот.

Вы также можете использовать ssh-copy-idбит авторизованного ключа.

Том О'Коннор
источник
1

Чтобы установить соединение ssh с аутентификацией с открытым ключом, пользователь, который инициирует соединение, должен иметь пару открытый / закрытый ключ. Во многих дистрибутивах Linux эти ключи не генерируются по умолчанию и должны генерироваться самим пользователем (или администратором от его имени).

Если вы вошли в систему как соответствующий пользователь, перейдите в свой домашний каталог и запустите

ssh-keygen

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

ПРИМЕЧАНИЕ : в этом процессе есть много возможных подводных камней, когда вы делаете это впервые. Все разрешения должны быть правильными, а файлы должны быть в нужных местах. Вероятно, будет лучше, если вы будете следовать HowTo, как этот .

wolfgangsz
источник