SSH Sshuttle: различия между версиями
Sirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
| Строка 13: | Строка 13: | ||
* <code>--dns</code> - в том числе использовать для DNS |
* <code>--dns</code> - в том числе использовать для DNS |
||
* <code>--ssh-cmd "ssh -F /Users/mmazur/ssh_config -vv"</code> - как и с какими параметрами подключаться к хосту <code>10.238.27.69</code> |
* <code>--ssh-cmd "ssh -F /Users/mmazur/ssh_config -vv"</code> - как и с какими параметрами подключаться к хосту <code>10.238.27.69</code> |
||
| + | |||
| + | |||
| + | Работает только для tcp/udp/icmp |
||
| + | |||
| + | Еще примеры |
||
| + | ==Весь трафик== |
||
| + | Например для работы в небезхопастных сетях |
||
| + | <PRE> |
||
| + | sshuttle -r user@remoteserver 0.0.0.0/0 -vv |
||
| + | </PRE> |
||
| + | |||
| + | Теперь о том, как работает. |
||
| + | 1) в момент запуска sshuttle копирует на удаленный сервер некий assembler.py (/usr/lib/sshuttle/assembler.py с ноута) |
||
| + | 2) запускает assembler.py на удаленном сервере (python2 -c import sys; skip_imports=1; verbosity=2; exec compile(sys.stdin.read(764), «assembler.py», «exec»)) |
||
| + | 3) запускает на локалхосте /usr/lib/sshuttle/main.py |
||
| + | 4) в iptables (в линкус) добавляет правило, по которым весь tcp трафик заворачивается в ssh-туннель. |
||
| + | |||
| + | ==DNS трафик через туннель тоже == |
||
| + | <PRE> |
||
| + | # sshuttle -r user@remoteserver 0.0.0.0/0 -vv --dns |
||
| + | </PRE> |
||
| + | (учтите, что если у вас в resolv.conf прописаны провайдерские dns-резолверы, то к ним вас после этой команды могут «не пустить». Впрочем — кто такой херней страдает и оставляет провайдерские dns?) |
||
| + | |||
| + | ==Используем ssh-ключ для коннекта== |
||
| + | <PRE> |
||
| + | # sshuttle -r user@remoteserver 0.0.0.0/0 -vv --dns --ssh-cmd "ssh -i /home/username/.ssh/id_dsa" |
||
| + | </PRE> |
||
| + | ==Используем ssh-агента для коннекта== |
||
| + | <PRE> |
||
| + | # sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" sshuttle -r root@messer.qs.biz 0.0.0.0/0 -vv |
||
| + | </PRE> |
||
| + | ==Отроутим трафик через ssh только до определенных сетей/хостов== |
||
| + | <PRE> |
||
| + | # SSH_AUTH_SOCK="$SSH_AUTH_SOCK" sshuttle -r root@remotehost.tld 188.40.35.183/32 153.121.72.212/32 153.121.72.211/32 173.194.122.0/24 -vv |
||
| + | </PRE> |
||
| + | |||
| + | Да, ещё где-то в недрах «это ж опенсорс!» есть версия, которая умеет роутить вообще весь трафик (и icmp, и весь udp), но она не очень похожа на стабильную. |
||
| + | https://github.com/brianmay/sshuttle/tree/tproxy — вот здесь (это НЕ апстрим проекта). |
||
Версия 18:01, 24 апреля 2024
Shuttle
Заметка что бы не забыть что да как
Пример:
sshuttle --remote mcc-user@10.238.27.69 10.238.56.0/24 -vv --dns --ssh-cmd "ssh -F /Users/mmazur/ssh_config -vv"
--remote mcc-user@10.238.27.69- через какой хост завернуть трафик (туда и только туда нужен доступ по логину/ключу/2FA )10.238.56.0/24- какую сеть маршрутизировать (в случае МакОС - добавлю подробности!)-vv- подробный вывод--dns- в том числе использовать для DNS--ssh-cmd "ssh -F /Users/mmazur/ssh_config -vv"- как и с какими параметрами подключаться к хосту10.238.27.69
Работает только для tcp/udp/icmp
Еще примеры
Весь трафик
Например для работы в небезхопастных сетях
sshuttle -r user@remoteserver 0.0.0.0/0 -vv
Теперь о том, как работает. 1) в момент запуска sshuttle копирует на удаленный сервер некий assembler.py (/usr/lib/sshuttle/assembler.py с ноута) 2) запускает assembler.py на удаленном сервере (python2 -c import sys; skip_imports=1; verbosity=2; exec compile(sys.stdin.read(764), «assembler.py», «exec»)) 3) запускает на локалхосте /usr/lib/sshuttle/main.py 4) в iptables (в линкус) добавляет правило, по которым весь tcp трафик заворачивается в ssh-туннель.
DNS трафик через туннель тоже
# sshuttle -r user@remoteserver 0.0.0.0/0 -vv --dns
(учтите, что если у вас в resolv.conf прописаны провайдерские dns-резолверы, то к ним вас после этой команды могут «не пустить». Впрочем — кто такой херней страдает и оставляет провайдерские dns?)
Используем ssh-ключ для коннекта
# sshuttle -r user@remoteserver 0.0.0.0/0 -vv --dns --ssh-cmd "ssh -i /home/username/.ssh/id_dsa"
Используем ssh-агента для коннекта
# sudo SSH_AUTH_SOCK="$SSH_AUTH_SOCK" sshuttle -r root@messer.qs.biz 0.0.0.0/0 -vv
Отроутим трафик через ssh только до определенных сетей/хостов
# SSH_AUTH_SOCK="$SSH_AUTH_SOCK" sshuttle -r root@remotehost.tld 188.40.35.183/32 153.121.72.212/32 153.121.72.211/32 173.194.122.0/24 -vv
Да, ещё где-то в недрах «это ж опенсорс!» есть версия, которая умеет роутить вообще весь трафик (и icmp, и весь udp), но она не очень похожа на стабильную. https://github.com/brianmay/sshuttle/tree/tproxy — вот здесь (это НЕ апстрим проекта).