Title : SSH через I2P
Author: Толстоевский
Date : 06 March 2022
На случай чебурнета, что таки может произойти, если не в результате непосредственно действий "властей", то в результате стараний белых господ с честными лицами, уверенных, что если как следует покарать россиян, те всенепременно свергнут правителей, насаждённых оными господами. Нет, господа, если человека лишить еды, он скорее сдохнет от голода, чем побежит свергать правителя, а в качестве агрессора запомнит именно вас, а не того, кто, по вашему мнению "на самом деле виноват"... Ну, ладно, это лирика.
Суть вопроса — есть серверы в благословенном Валиноре, которые обеспечивают связью с остальными миром ряд жителей кровавого Мордора. И есть админ этих серверов, также обитающий в оном Мордоре и очень желающий иметь административный доступ к указанным серверам.
В условиях, скажем так, умеренных блокировок, доступ обеспечивается через сеть 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.
---