diff --git a/README.md b/README.md index e48e11d..6d7b2e0 100644 --- a/README.md +++ b/README.md @@ -11,3 +11,6 @@ ### XMPP * [XMPP/Jabber в I2P](XMPP/xmpp-in-i2p.md) + +### SSH +* [SSH через I2P](SSH/sshoveri2p.md) diff --git a/SSH/sshoveri2p.md b/SSH/sshoveri2p.md new file mode 100644 index 0000000..ec4c0de --- /dev/null +++ b/SSH/sshoveri2p.md @@ -0,0 +1,82 @@ +Title : SSH через I2P +Author: Толстоевский +Date : 06 March 2022 +Tags : tech + +# SSH через I2P + +На случай чебурнета, что таки может произойти, если не в результате непосредственно действий "властей", то в результате стараний белых господ с честными лицами, уверенных, что если как следует покарать россиян, те всенепременно свергнут правителей, насаждённых оными господами. Нет, господа, если человека лишить еды, он скорее сдохнет от голода, чем побежит свергать правителя, а в качестве агрессора запомнит именно вас, а не того, кто, по вашему мнению "на самом деле виноват"... Ну, ладно, это лирика. + +## Постановка задачи + +Суть вопроса — есть серверы в благословенном Валиноре, которые обеспечивают связью с остальными миром ряд жителей кровавого Мордора. И есть админ этих серверов, также обитающий в оном Мордоре и очень желающий иметь административный доступ к указанным серверам. + +В условиях, скажем так, умеренных блокировок, доступ обеспечивается через сеть Yggdrasil. "Но что делать, если зубная щётка недоступна?", то бишь если доступ (ну вдруг?) будет возможен только через i2p (вариант абсолютной Серверной Кореи тут за рамками статьи)? + +Здесь нам потребуется создать туннели на стороне сервера и на стороне клиента и использовать их для работы. + +### Настройки на стороне сервера + +По умолчанию примем, что вы используете i2pd, а не Java-версию. Если это не так - срочно исправьте сие недоразумение, потому что у автора указанной жава-версии по имени Zzz кукушечка немного не на месте, что может привести к неприятностям. + +Итак, в файл /etc/i2pd/tunnels.conf вбиваем вот такую конструкцию: + +```` +[SSH-SERVER] +type = server +port = 22 +host = 127.0.0.1 +inbound.length = 1 +outbound.length = 1 +inbound.quantity = 5 +outbound.quantity = 5 +inbound.backupQuantity = 2 +outbound.backupQuantity = 2 +i2cp.reduceOnIdle = true +keys = ssh-in.dat +```` + +После чего перезапускаем роутер, и в административном интерфейсе по адресу 127.0.0.1:7070 тыкаем в раздел I2P tunnels - в списке должен появиться туннель SSH-SERVER. Скопируйте адрес этого туннеля (в виде "охренетькакмногабукаф.b32.i2p") + + +### Настройки на стороне клиента + +Теперь заставим админскую машину работать с этим счастьем. Для начала - тот же файл /etc/i2pd/tunnels.conf (но уже на нашем компе): + +```` + +[SSH-CLIENT] + type = client + host = 127.0.0.1 + port = 2322 + inbound.length = 1 + outbound.length = 1 + inbound.quantity = 5 + outbound.quantity = 5 + inbound.backupQuantity = 2 + outbound.backupQuantity = 2 + i2cp.dontPublishLeaseSet = true + destination = охренетькакмногабукаф.b32.i2p + destinationport = 22 + keys = ssh-in.dat + +```` + +Перезапускаем роутер, и пока он устанавливает связи, поправим (тут уже при желании - если разные ключи для разным мест используете) ещё и файлик ~/.ssh/config примерно так: + +```` +Host 127.0.0.1 + User yaumamyhacker + IdentityFile /home/yaumamyhacker/.ssh/id_ed25519 + +```` + +That's all, folks! Отныне команда + +```` +ssh 127.0.0.1 -p 2322 +```` + +будет логинить нас на нужный сервер через туннель I2P. + +---