guidesStorage/SSH/sshoveri2p.md

4.6 KiB
Raw Permalink Blame History

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.