Мне нужно настроить сеансы 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, но он не содержит данных (все закомментировано).
Кто-нибудь знает, как я могу узнать, где хранится сертификат, или как я могу его экспортировать, чтобы передать его на другой сервер? Я надеялся, что файлы конфигурации дадут мне ответ, но они почти не помогают.
Предполагая, что вы имеете в виду аутентификацию с открытым ключом на уровне пользователя под словом «сертификат», и вы создали их, используя 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-client, так и ssh-server, поэтому вам придется просматривать оба файла с обоих концов.
Вам нужно найти открытый ключ ssh для пользователя, который будет входить в систему для сценария.
Например, если у меня есть serverA и serverB, я бы сделал следующее.
sudo adduser scriptrunner
...
sudo su - scriptrunner
ssh-keygen
...
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3Nza...... scriptrunner@serverA
затем сделайте что-то подобное на ServerB
Затем на serverA введите открытый ключ пользователя scriptrunner serverB в /home/scriptrunner/.ssh/authorized_keys
и сделайте противоположное на serverB (используя пользователя scriptrunner serverA в authorized_keys в /home/scriptrunner/.ssh/authorized_keys
на сервереB)
Тогда вы сможете сделать ssh scriptrunner@serverA
с serverB с помощью ключа, и наоборот.
Вы также можете использовать ssh-copy-id
сделать бит authorized_keys.
Чтобы установить ssh-соединение с аутентификацией с открытым ключом, пользователь, который инициирует соединение, должен иметь пару открытого / закрытого ключей. Во многих дистрибутивах Linux эти ключи не генерируются по умолчанию и должны быть созданы самим пользователем (или администратором от его имени).
Если вы вошли в систему как соответствующий пользователь, перейдите в свой домашний каталог и запустите
ssh-keygen
Примите все значения по умолчанию, и новая пара ключей будет создана в ~ / .ssh / id_rsa и ~ / .ssh / id_rsa.pub. Теперь скопируйте открытый ключ и вставьте его в файл ~ / .ssh / authorized_keys целевой учетной записи пользователя на целевой машине. Затем включите аутентификацию с открытым ключом на целевой машине (в / etc / ssh / sshd_config), и все будет в порядке.
НОТА: когда вы делаете это впервые, в этом процессе есть много возможных подводных камней. Все разрешения должны быть правильными, а файлы должны находиться в нужных местах. Вероятно, будет лучше, если вы последуете HowTo Like вот этот.