Доступ по SSH за NAT через TOR: различия между версиями
Дым (обсуждение | вклад) |
Дым (обсуждение | вклад) Нет описания правки |
||
Строка 9: | Строка 9: | ||
ClientOnly 1 | ClientOnly 1 | ||
Schedulers KISTLite | Schedulers KISTLite | ||
HiddenServiceDir /var/lib/tor/ssh # Порядок этой и | HiddenServiceDir /var/lib/tor/ssh # Порядок этой и следующей записей именно таков: не менять. | ||
HiddenServicePort 2222 127.0.0.1:22 # Запросы к скрытому порту 2222 | HiddenServicePort 2222 127.0.0.1:22 # Запросы к скрытому порту 2222 пересылать на локальный 22. | ||
</source> | </source> | ||
# Перезапустить оба сервиса: | # Перезапустить оба сервиса: | ||
Строка 21: | Строка 21: | ||
#Запустить хотя бы минимально настроенный TOR: | #Запустить хотя бы минимально настроенный TOR: | ||
#:<source lang="bash"># systemctl enable --now tor</source> | #:<source lang="bash"># systemctl enable --now tor</source> | ||
#Добавить в < | #Добавить в <code>~/.ssh/config</code> секцию: | ||
#:<source lang="bash"> | #:<source lang="bash"> | ||
Host *.onion | Host *.onion | ||
Строка 28: | Строка 28: | ||
ProxyCommand nc -x localhost:9050 -X 5 %h %p | ProxyCommand nc -x localhost:9050 -X 5 %h %p | ||
</source> | </source> | ||
#Если не хочется запоминать/искать длинные луковые имена удалённых хостов, можно в том же <code>~/.ssh/config</code>, только выше, присвоить каждому из них короткие псевдонимы вида: | |||
#:<source lang="bash"> | |||
Host home.tor | |||
HostName дли-и-инное_имя_домашнего_компа.onion | |||
Host work.tor | |||
HostName дли-и-инное_имя_рабочего_компа.onion | |||
</source> | |||
#:А в общей для таких хостов секции поменять <code>Host *.onion</code> на <code>Host *.tor</code> либо добавить ещё одну такую же — для псевдонимов. | |||
#Пробовать подключиться: | #Пробовать подключиться: | ||
#:<source lang="bash">$ ssh username@имя_длиной_в_56_буквоцифр.onion</source> | #:<source lang="bash">$ ssh username@имя_длиной_в_56_буквоцифр.onion</source> | ||
#:или | |||
#:<source lang="bash">$ ssh username@псевдоним.tor</source> | |||
=Штурмуем преграды= | =Штурмуем преграды= |
Версия от 05:40, 27 декабря 2021
На сервере
- Cоздать каталог для скрытого сервиса SSH, где будут лежать файлы с именем хоста и с ключами — своими и авторизованных клиентов:
# install -m 700 -o _tor -g _tor -d /var/lib/tor/ssh
- В файле настроек TOR (по умолчанию — /etc/tor/torrc, но можно переложить и переименовать):
- закомментировать опции
BridgeRelay
,DisableNetwork
,NewCircuitPeriod
иSandbox
— если не уже, отсутствие же таковых игнорировать; - добавить опции:
ClientOnly 1 Schedulers KISTLite HiddenServiceDir /var/lib/tor/ssh # Порядок этой и следующей записей именно таков: не менять. HiddenServicePort 2222 127.0.0.1:22 # Запросы к скрытому порту 2222 пересылать на локальный 22.
- закомментировать опции
- Перезапустить оба сервиса:
# systemctl restart sshd tor
- Получить имя хоста в сети TOR:
# cat /var/lib/tor/ssh/hostname имя_длиной_в_56_буквоцифр.onion
На клиенте
- Запустить хотя бы минимально настроенный TOR:
# systemctl enable --now tor
- Добавить в
~/.ssh/config
секцию:Host *.onion Port 2222 VerifyHostKeyDNS no ProxyCommand nc -x localhost:9050 -X 5 %h %p
- Если не хочется запоминать/искать длинные луковые имена удалённых хостов, можно в том же
~/.ssh/config
, только выше, присвоить каждому из них короткие псевдонимы вида:Host home.tor HostName дли-и-инное_имя_домашнего_компа.onion Host work.tor HostName дли-и-инное_имя_рабочего_компа.onion
- А в общей для таких хостов секции поменять
Host *.onion
наHost *.tor
либо добавить ещё одну такую же — для псевдонимов.
- Пробовать подключиться:
$ ssh username@имя_длиной_в_56_буквоцифр.onion
- или
$ ssh username@псевдоним.tor
Штурмуем преграды
Если узел не только за NAT, а ещё и за прокси, запуск на нём TOR через proxychains не позволит достукиваться до него снаружи. Вместо этого следует добавить в настройки TOR'а одну (или все) из опций, позволяющих выход в мир через такой вышестоящий прокси:
HTTPProxy host[:port] # На эту ругается: дескать, устарела и из новых версий её уберут.
HTTPSProxy host[:port]
Socks4Proxy host[:port]
Socks5Proxy host[:port]
Если прокси с аутентификацией, понадобятся ещё и эти:
HTTPSProxyAuthenticator username:password
HTTPProxyAuthenticator username:password
Socks5ProxyUsername username
Socks5ProxyPassword password