Как соединить два удаленных компьютера с помощью ssh

Как соединить два удаленных компьютера с помощью ssh

Я нашел довольно много руководств по соединению двух компьютеров через SSH, но, полагаю, я просто не понимаю сути. (Я попробовал, например,Вот этотилиВот этот)

Допустим, я пользователь A с ipv4 xxx.xxx.x.xx и хочу установить ssh-соединение с моим другом (в другой стране) пользователем B с ipv4 yyy.yyy.y.yy.

Итак, я генерирую ключ SSH, и у меня есть хорошие ./ssh/id_rsa и ./ssh/id_rsa.pub, и теперь я должен скопировать их на компьютер моего друга?

Но, как можно было предположить,

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

не работает (как это может работать, если мы еще не ограничены?)

Должен ли пользователь B вручную копировать этот файл в свой собственный файл .ssh?

И затем на моем компьютере

ssh [email protected]

будет работать напрямую? (что крайне нереально, я думаю...)

Извините за глупость, но мне кажется, что в этом уроке люди имеют дело с одним и тем же компьютером...

решение1

Итак, я генерирую ключ SSH, и у меня есть хорошие ./ssh/id_rsa и ./ssh/id_rsa.pub, и теперь я должен скопировать их на компьютер моего друга?

Да, конкретно, вам необходимо скопировать свой файл (открытый ключ) в файл удаленной системы .~/.ssh/id_rsa.pub~/.ssh/authorized_keys

(Хотя, вам действительно следовало бытвой собственный(Учетная запись пользователя на целевом компьютере вместо того, чтобы делиться учетной записью «userB» вашего друга.)

[ssh-copy-id] не работает (как это может быть, если мы еще не ограничены?)

Обычно это работаетввод паролядля входа в удаленную систему. (SSH использует те же «системные» учетные записи и пароли, что и локальные входы.)

Особенность SSH в том, что он позволяет клиенту выбирать из нескольких методов входа в систему — на самом деле это не так.толькона основе пары ключей. (Похоже на то, как веб-сайт позволяет вам входить в систему с помощью пароля, с помощью Google, с помощью USB-токена и т. д.)

Конечно, если в удаленной системе уже есть вход по паролюнеполноценный(что в наши дни стало своего рода необходимостью), то ssh-copy-id действительно не может работать из ничего, и вам придется скопировать свой открытый ключ в файл «authorized_keys» сервера каким-то другим способом.

К счастью, открытый ключ — это всего лишь длинная строка текста, поэтому вы можете вставить ее по электронной почте, в Discord или как-то еще. (И хотя ключи RSA длинные, ssh-keygen -t ed25519они создадутмного(Короче id_ed25519.pub, который в крайнем случае можно записать на бумаге.)

(Хотя даже в таких ситуациях ssh-copy-id все равно может оставатьсятехническиполезно, если у вас уже есть одна рабочая пара ключей, и вы хотите использовать ее для регистрации другой. Третьей альтернативой могут быть входы на основе Kerberos, которые в основном встречаются в корпоративных/любительских средах.)

И тогда на моем компьютере это будет работать напрямую? (что крайне нереально, я думаю...)ssh [email protected]

В частности, SSH-часть будет работать, да.

Однако учтите, что SSH не проходит волшебным образом через NAT и не настраивает для вас автоматически «переадресацию портов», поэтому, если это необходимо для доступа к домашнему компьютеру вашего друга, то это нужно будет сделать отдельно. (SSH использует TCP-порт 22.) Аналогично, если есть брандмауэр, ему понадобится правило, разрешающее SSH.

Такчтонеобходимо разобраться, прежде чем ssh y.y.y.yэто заработает.

(Большинство руководств по SSH не охватывают домашний NAT, поскольку это очень общая вещь и не является строго частью настройки SSH. Просто предполагается, что если кто-то хочет разрешить подключения к домашней сети через IPv4, то он уже знает, что такое переадресация портов и как ее нужно настроить — нет никакой разницы, делать это для SSH, Minecraft, BitTorrent или чего-то еще.

Кроме того, многие руководства по SSH больше ориентированы на разработчиков и вообще людей, которые хотят подключиться к VPS, имеющему свой собственный публичный адрес IPv4. Это немного отличается от попыток подключиться к ПК друга.)

решение2

Для работы аутентификации с открытым ключом ваш открытый ключ ( id_rsa.pub) должен быть добавлен к ~/.ssh/authorized_keysцелевому пользователю. Как вы собираетесь его получить, не имеет значения для SSH — вы должны разобраться с этим сами. Вы можете использовать любой носитель, который вам нравится, если он гарантирует целостность (т. е. получатель может подтвердить, что то, что он получил, это то, что вы отправили). Он не должен быть конфиденциальным, потому что это вашпубличныйключ. Закрытый ключ ( id_rsa) остается на вашем компьютере.

В чем тогда смысл ssh-copy-id? Есть два варианта использования:

  1. Аутентификация по паролю включена, и вы хотите включить аутентификацию по открытому ключу. В этом случае вам придется ввести пароль для подключения к хосту B и ssh-copy-idдобавить открытый ключ к authorized_hosts.

  2. Аутентификация с открытым ключом уже настроена, но вы хотите добавить другой ключ, например, с использованием более сильной или другой криптографии. В частности, вы можете захотеть добавить ключ, который не принадлежит вам или вашему текущему хосту. В этом случае вы захотите указать файл ключей с опцией -i. (По умолчанию добавляются все предоставленные ключи, ssh-add -Lесли id_rsa.pubих нет.)

Зачем использовать аутентификацию с открытым ключом, если у вас уже может быть настроена аутентификация с паролем? Потому что ее невозможно угадать и она не требует взаимодействия с пользователем.

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