Як я можу використовувати SSH з проксі-сервером SOCKS 5?


35

У мене є проксі-сервер SOCKS5, встановлений через PuTTY з портом 7777, налаштованим як динамічний порт. Я можу використовувати firefox / filezilla / тощо, конфігуруючи їх для використання проксі-сервера SOCKS з localhostі порту 7777. Але я не можу зрозуміти, як перенести ssh (через Cygwin) на віддалений сервер, використовуючи динамічний порт. Чи можливо це?

Я намагався використовувати ProxyCommandнаступний метод.

  1. Створіть ~/.ssh/configіз наступного рядка:

    ProxyCommand /usr/bin/nc -X connect -x 127.0.0.1:7777 %h %p
    
  2. Запустіть ssh -p22 user @ remotehost

Я отримую повідомлення ssh_exchange_identification: Connection closed by remote host


1
Щоб зробити програму, яка не підтримує SOCKS, пройти через SOCKS, ви можете використовувати так званий проксифер; див. en.wikipedia.org/wiki/Comppare_of_proxifiers . Зокрема, я рекомендую проксифер з відкритим кодом tun2socks ( code.google.com/p/badvpn/wiki/tun2socks ).
Ambroz Bizjak

Дякую за коментар Ambroz. Мені це потрібно для роботи в cygwin, і я бачу на сторінці вікіпедії на проксифікаторах, що всі ті, про які вона згадує, або не реалізовані в cygwin, або не застосовуються. Чи є спосіб змусити проксіфікатора працювати в cygwin?

вам не потрібно, щоб спеціально підтримувати Cygwin. Зрештою, програми Cygwin - це лише програми Windows, але інтерфейс POSIX, реалізований як бібліотека. Якщо проксіфікатор працює в Windows, він повинен мати можливість проксифікувати програми Cygwin.
Амброз Біжак

Відповіді:


31

Ви використовуєте 'connect' для HTTPS як свою проксі-версію, це від man nc:

-X proxy_version Попрошує nc повинен використовувати вказаний протокол під час розмови з проксі-сервером. Підтримувані протоколи - "4" (SOCKS v.4), "5" (SOCKS v.5) та "підключення" (проксі HTTPS). Якщо протокол не вказаний, використовується версія SOCKS 5.

Тому для використання SOCKS 5 слід використовувати наступне:

ProxyCommand /usr/bin/nc -X 5 -x 127.0.0.1:7777 %h %p

Або просто:

ProxyCommand /usr/bin/nc -x 127.0.0.1:7777 %h %p

Я сподіваюся, що це допомагає.


Дякую Саман, що працювало! Також дякую за пояснення, це допомагає.

ProxyCommandПовинна бути першому рядку вашого ~/.ssh/config', or else nested inside a specify розділу Host`. Не дуже впевнений, чому. Це не працює, якщо це останній рядок у~/.ssh/config
Aaron McDaid

@AaronMcDaid: Від man ssh_config: "Для кожного параметра буде використано перше отримане значення." Тому ... глобальні налаштування повинні бути перед будь-якими Hostрозділами. Останній рядок ~/.ssh/configє частиною заключного Hostрозділу.
mpb

Варто зазначити, що netcat є в /bin/ncDebian і Ubuntu.
Пер Лундберг

11
ssh -o ProxyCommand='nc --proxy-type socks4 --proxy 127.0.0.1:9050 %h %p' user@host

fc19 x86_64, Ncat: Версія 6.25


просто цікаво - чому proxy-type socks4?
підозрюваний

2
Чи можете ви додати трохи більше пояснень до цього, щоб сказати, чому це рішення.
ChrisF

1
@ChrisF - це те саме, що прийняте рішення, але це однолінійний! Не потрібно змінювати будь-який конфігураційний файл.
j123b567

1
Це програма nmap ncat (постачається через такі apt install nmapAPT-системи, як Ubuntu та Debian), яка відрізняється від netcat (будь то netcat-openbsd або netcat-традиційного Hobbit).
Адам Кац

1
@suspectus пов'язане з @Adam Katz коментаря, то proxy-typeце socks4тому , що птар ncatпрограма не підтримувала sock5 до зовсім недавно. Дійсно, це проблема вже зараз (листопад 2017 р.), Оскільки RHEL 7 / Centos 7 перейшов на пакет nmap, але використовував старішу версію, яка не підтримує шкарпетки5
Randall

3

tsocks ( http://tsocks.sourceforge.net/ ) - це приємна обгортка, яка використовує LD_PRELOAD для того, щоб будь-яка програма прозоро використовувала проксі SOCKS:

tsocks ssh example.com

Просто працює, не забудьте налаштувати проксі-сервер SOCKS в /etc/tsocks.conf


занадто складний, щоб мати файл конфігурації
Jiang YD

1

Ця команда виконає, щоб просто використовувати nc:

ssh examplehost.com -o "ProxyCommand=nc --proxy localhost:7000 %h %p"

За замовчуванням HTTP-проксі, на портах 7000 працює HTTP-проксі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.