11

Есть две машины Linux, A и B. Сценарии, работающие на A, должны иметь возможность SSH подключаться к B. Таким образом, A генерирует открытый ключ (вероятно, сгенерированный ssh-keygen id_rsa.pub), а затем использует соответствующий закрытый ключ ( снова, вероятно, id_rsa), чтобы сделать это соединение SSH.

Если что-то, что я сказал выше, неверно или введено в заблуждение, пожалуйста, начните исправлять меня!

Предполагая, что я более или менее на цели:

  • Как A "дает" B свой открытый ключ (id_rsa.pub)? Это должен быть ручной процесс, или это может быть автоматизировано? Если руководство, каков процесс? Если это автоматизировано, какая команда? Когда B "получает" этот открытый ключ, куда он идет или хранится?
  • При инициации SSH-соединения с B, как A "использует" свой закрытый ключ (id_rsa) как часть этого соединения?

2 ответа2

5

ssh-keygen генерирует как открытый, так и закрытый ключи, которые изначально находятся только локально. Передача открытого ключа другому хосту - это то, что пользователь должен будет сделать вручную, отправив его кому-то, ответственному за сервер B, или, если у вас есть учетная запись с паролем, вы можете войти в систему и поместить ее туда самостоятельно. Чтобы разрешить вход без пароля на сервер B, вам необходимо добавить свой открытый ключ в файл ~/.ssh/authorized_keys на сервере B (один открытый ключ на строку, в этом файле может быть любое количество ключей). Существует команда Linux ssh-copy-id , которая скопирует для вас идентификатор и поместит его в файл.

По умолчанию ssh будет использовать файл ~/.ssh/id_XXX в качестве вашего закрытого ключа. XXX может быть rsa, dsa или любым протоколом, для которого был сгенерирован ключ. IIRC, dsa старая и не должна использоваться. Если вы хотите использовать другой закрытый ключ, вы можете указать его в своей команде ssh, используя -i . Если используемый закрытый ключ совпадает с открытым ключом на удаленном компьютере (в файле author_keys для учетной записи пользователя, в которую вы входите), вам не нужно будет вводить пароль.

3

Есть две машины Linux, A и B. Сценарии, работающие на A, должны иметь возможность SSH подключаться к B. Таким образом, A генерирует открытый ключ (вероятно, сгенерированный ssh-keygen id_rsa.pub), а затем использует соответствующий закрытый ключ ( снова, вероятно, id_rsa), чтобы сделать это соединение SSH.

Если что-то, что я сказал выше, неверно или введено в заблуждение, пожалуйста, начните исправлять меня!

Предполагая, что я более или менее на цели:

да уж

но B необходимо, чтобы открытый ключ A был указан в файле авторизованных ключей B, чтобы A мог подключиться к B

Также вы можете удалить id_rsa.pub и ssh в B, и он все равно будет работать, потому что открытый ключ генерируется заново при каждом подключении ssh и не сохраняется ни в одном id_rsa.pub.

Как A «дает» B свой открытый ключ (id_rsa.pub)? Это должен быть ручной процесс, или это может быть автоматизировано? Если руководство, каков процесс? Если это автоматизировано, какая команда?

инструкция - что-то вроде

из-

cat ~/.ssh/id_rsa.pub | ssh USER@HOST "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

или даже больше вручную, чтобы сломать команду

$ cat id_rsa.pub | ssh user@host 'cat>~/a.a'

затем на B убедитесь, что ~/.ssh существует, затем выполните cat a.a >> ~/.ssh/authorized_keys

и вы можете просмотреть и авторизовать ключи B до и после, чтобы убедиться, что ключ указан в списке.

Или вы можете отправить id_rsa.pub по электронной почте на учетную запись электронной почты, затем из B, B можете проверить электронную почту и добавить содержимое id_rsa.pub в свой файл author_keys.

автоматически

Команда ssh-copy-id

Вы должны быть в состоянии ssh, поэтому вам нужен доступ с паролем

Вместо того, чтобы делать ssh user @ host, вы делаете ssh-copy-id user @ host, и вам предлагается ввести пароль, вы вводите его, вы находитесь, он скопирует открытый ключ. И в следующий раз, когда вы сделаете ssh user @ host, он будет использовать ключ.

Когда B "получает" этот открытый ключ, куда он идет или хранится?

B's ~/.ssh/authorized_keys

При инициации SSH-соединения с B, как A «использует» свой закрытый ключ (id_rsa) как часть этого соединения?

ну, я не знаю много об этом, вне головы, но все, что зашифровано одним ключом, может быть расшифровано другим ключом, а идентификация себя немного отличается от отправки данных ... и может быть что-то о временном ключе тоже.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .