guidesStorage/SSH/sshoveri2p.md
2022-03-11 02:56:49 +03:00

83 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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