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. ---