Доступ по SSH за NAT через TOR: различия между версиями
Дым (обсуждение | вклад) |
Дым (обсуждение | вклад) |
||
Строка 4: | Строка 4: | ||
#:<source lang="text">Port 2222</source> | #:<source lang="text">Port 2222</source> | ||
# Cоздать каталог для скрытого сервиса SSH, где будут лежать файлы с именем хоста и с ключами — своими и авторизованных клиентов: | # Cоздать каталог для скрытого сервиса SSH, где будут лежать файлы с именем хоста и с ключами — своими и авторизованных клиентов: | ||
#:<source lang=" | #:<source lang="bash"># install -m 700 -o _tor -g _tor -d /var/lib/tor/ssh</source> | ||
# В файле настроек TOR (по умолчанию — <strong>/etc/tor/torrc</strong>, но можно переложить и переименовать): | # В файле настроек TOR (по умолчанию — <strong>/etc/tor/torrc</strong>, но можно переложить и переименовать): | ||
#:* закомментировать опции <code>BridgeRelay</code>, <code>DisableNetwork</code>, <code>NewCircuitPeriod</code> и <code>Sandbox</code> (если не уже — отсутствие же таковых игнорировать); | #:* закомментировать опции <code>BridgeRelay</code>, <code>DisableNetwork</code>, <code>NewCircuitPeriod</code> и <code>Sandbox</code> (если не уже — отсутствие же таковых игнорировать); | ||
Строка 15: | Строка 15: | ||
</source> | </source> | ||
# Перезапустить оба сервиса: | # Перезапустить оба сервиса: | ||
#:<source lang=" | #:<source lang="bash"># systemctl restart sshd tor</source> | ||
# Получить имя хоста в сети TOR: | # Получить имя хоста в сети TOR: | ||
#:<source lang=" | #:<source lang="bash"># cat /var/lib/tor/ssh/hostname | ||
имя_длиной_в_56_буквоцифр.onion</source> | имя_длиной_в_56_буквоцифр.onion</source> | ||
Версия от 04:21, 1 сентября 2020
По материалу Михаила Новосёлова — спасибо, добрый человек!
На сервере
- В /etc/openssh/sshd_config изменить порт на непривилегированный, иначе TOR не запустится непривилегированным же пользователем. Например:
Port 2222
- Cоздать каталог для скрытого сервиса SSH, где будут лежать файлы с именем хоста и с ключами — своими и авторизованных клиентов:
# install -m 700 -o _tor -g _tor -d /var/lib/tor/ssh
- В файле настроек TOR (по умолчанию — /etc/tor/torrc, но можно переложить и переименовать):
- закомментировать опции
BridgeRelay
,DisableNetwork
,NewCircuitPeriod
иSandbox
(если не уже — отсутствие же таковых игнорировать); - добавить опции (порядок
HiddenServiceDir
иHiddenServicePort
именно таков):ClientOnly 1 Schedulers KISTLite HiddenServiceDir /var/lib/tor/ssh HiddenServicePort 2222 127.0.0.1:2222 # Запросы к скрытому порту 2222 слать на локальный 2222.
- закомментировать опции
- Перезапустить оба сервиса:
# systemctl restart sshd tor
- Получить имя хоста в сети TOR:
# cat /var/lib/tor/ssh/hostname имя_длиной_в_56_буквоцифр.onion
На клиенте
- Запустить хотя бы минимально настроенный TOR.
- Добавить в ~/.ssh/config секцию:
Host *.onion ProxyCommand nc -x localhost:9050 -X 5 %h %p VerifyHostKeyDNS no Port 2222
- Пробовать подключиться:
$ ssh username@имя_длиной_в_56_буквоцифр.onion
Штурмуем преграды
Если узел не только за 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
Однако не факт, что всё получится: многое зависит от суровости вышестоящего прокси. К примеру, из школ через прокси для СЗО этот трюк не срабатывает — РТК плотно забаррикадировались.
Можно ещё покрутить опции FascistFirewall
на пару с ReachableAddresses
— но это уже для тех, кто привычен ко вдумчивому курению руководств:$ man tor