ssh-copy-id но наоборот

ssh-copy-id но наоборот

Я понимаю, как я могу поместить свой открытый ключ SSH в авторизованные ключи другой машины, используя ssh-copy-idпри этом имя пользователя и пароль удаленной машины.

Как возможно обратное? Получаю открытый ключ какой-то удаленной машины (пароль не требуется, поскольку он открытый) и помещаю его в свои собственные авторизованные ключи (опять же, пароль не требуется, поскольку он мой).

решение1

ssh ${remote_host} cat .ssh/id_rsa.pub | tee -a $HOME/.ssh/authorized_keys

решение2

Вы смешиваете два разных типа ключей SSH. Хотя они похожи по структуре, у них совершенно разное предназначение.

Ваш открытый ключ — это то, что можно назватьпользовательский ключ: Хотя этопубличный, т.е. нет необходимости держать это в тайне, это неопубликованоавтоматически любыми способами. Если вы хотите разместить это на своей веб-странице, конечно, вы можете это сделать. Но вы должны сделать это самостоятельно.

С другой стороны, ключи для каждой машины называютсяключи хоста. Они автоматически обмениваются при входе в систему, поэтому их можно считатьопубликовано. Но ключи хоста не попадают в authorized_keysфайл: вместо этого они попадают в known_hosts. Простое наличие ключа хоста от какой-то машины не даст никому никакого доступа: это просто позволяет вашему SSH-клиенту подтвердить, что машина та же самая, что и раньше, когда вы подключаетесь к ней.

Если системный администратор решит включить HostbasedAuthenticationв /etc/ssh/sshd_config, а ключ хоста удаленного хоста находится в общесистемном /etc/ssh/ssh_known_hostsфайле, то можно будет добавить имя удаленного хоста в /etc/hosts.equivили /etc/ssh/shosts.equivразрешитькаждыйна этом удаленном хосте для входа в соответствующие учетные записи на локальном хосте без ввода пароля. Если системный администратор также устанавливает IgnoreRhosts, noто вы как обычный пользователь можете аналогичным образом разрешить определенному пользователю на определенном удаленном хосте получать доступ к вашей учетной записи на локальном хосте без пароля, поместив ключ хоста удаленного хоста в ваш ~/.ssh/known_hostsи имя пользователя@имя хоста в ваш ~/.rhostsили ~/.shosts. Но этот метод аутентификации отключен по умолчанию.

(Как вы думаете, почему два файла, например ~/.shostsи ~/.rhosts? Ну, это потому, что .rhostsфайл использовался старыми незашифрованными инструментами rsh/ rlogin/ rexec/ rcp, а SSH изначально был разработан как его замена. Вы использовали бы .rhostsили hosts.equiv, если бы хотели разрешить доступ через оба инструмента rshи ssh, и .shostsили shosts.equiv, если бы вы хотели разрешить только доступ по SSH.)

решение3

Используя ssh-keyscan или автоматически при подключении к неизвестному хосту, который добавит ключ в known_hosts для вас. Если вы хотите сделать это вручную, вы можете использовать команду ниже:

ssh-keyscan hostname >> ~/.ssh/known_hosts

Связанный контент