Подключение к SSH через прокси-сервер
Я понятия не имею, что я здесь делаю, поэтому имейте это в виду, если вы можете мне помочь!
Я пытаюсь подключиться к своему виртуальному серверу через прокси, но не могу подключиться, он просто зависает. Я предполагаю, что это потому, что он не проходит через наш прокси.
Я попробовал точно то же самое дома, и это работает отлично. Я использую терминал для OSX.
Может кто-нибудь посоветовать мне, как я могу пройти через прокси с SSH?
Ответы
Ответ 1
Вот как ответить Ричарду Кристенсену как на одну строку, редактирование файла не требуется (заменяйте заглавными буквами вашими собственными настройками, PROXYPORT часто 80):
ssh [email protected]_DEST -o "ProxyCommand=nc -X connect -x PROXYHOST:PROXYPORT %h %p"
Вы также можете использовать ту же -o...
для scp, см. Https://superuser.com/a/752621/39364
Если вы получите это в OS X:
nc: invalid option -- X
Try 'nc --help' for more information.
может случиться так, что вы случайно используете доморощенную версию netcat (вы можете увидеть, выполнив a, which -a nc
command-- /usr/bin/nc
должен быть указан первым). Если их два, то один обходной путь - указать полный путь к nc, который вы хотите, например, ProxyCommand=/usr/bin/nc
...
Для CentOS nc
та же проблема с invalid option --X
. connect-proxy
- это альтернатива, простая в установке с использованием yum
и работающая -
ssh -o ProxyCommand="connect-proxy -S PROXYHOST:PROXYPORT %h %p" [email protected]_DEST
Ответ 2
Если ваше прокси-соединение SSH будет использоваться часто, вам не нужно передавать их в качестве параметров каждый раз. вы можете добавить следующие строки в ~/.ssh/config
Host foobar.example.com
ProxyCommand nc -X connect -x proxyhost:proxyport %h %p
ServerAliveInterval 10
затем для подключения используйте
ssh foobar.example.com
Источник:
http://www.perkin.org.uk/posts/ssh-via-http-proxy-in-osx.html
Ответ 3
Я использую параметр -o "ProxyCommand=nc -X 5 -x proxyhost:proxyport %h %p"
ssh для подключения через прокси-сервер socks5 на OSX.
Ответ 4
@rogerdpack
для платформы Windows очень сложно найти nc.exe с -X (http_proxy), однако я нашел, что nc можно заменить на ncat, полный пример следующим образом:
Host github.com
HostName github.com
#ProxyCommand nc -X connect -x 127.0.0.1:1080 %h %p
ProxyCommand ncat --proxy 127.0.0.1:1080 %h %p
User git
Port 22
IdentityFile D:\Users\Administrator\.ssh\github_key
и ncat с --proxy могут отлично работать
Ответ 5
Для окон параметры @shoaly у меня не работали полностью. Я получаю эту ошибку:
NCAT DEBUG: Proxy returned status code 501.
Ncat: Proxy returned status code 501.
ssh_exchange_identification: Connection closed by remote host
Я хотел подключиться к удаленному серверу SSH, и порт SSH был закрыт в моей сети. Я нашел два решения, но второе лучше.
Чтобы использовать прокси в командах git
с использованием ssh (например, при использовании GitHub) - при условии, что вы установили Git Bash в C:\Program Files\Git\
- откройте ~/.ssh/config
и добавьте эту запись:
host github.com
user git
hostname github.com
port 22
proxycommand "/c/Program Files/Git/mingw64/bin/connect.exe" -a none -S 127.0.0.1:9150 %h %p
Ответ 6
$ which nc
/bin/nc
$ rpm -qf /bin/nc
nmap-ncat-7.40-7.fc26.x86_64
$ ssh -o "ProxyCommand nc --proxy <addr[:port]> %h %p" [email protected]
$ ssh -o "ProxyCommand nc --proxy <addr[:port]> --proxy-type <type> --proxy-auth <auth> %h %p" [email protected]
Ответ 7
ProxyCommand nc -proxy xxx.com:8080 %h %p
удалите -X connect
и используйте вместо него -proxy
.
Работал на меня.
Ответ 8
Я использую proxychains ssh [email protected]
; из proxychains-ng (см. https://github.com/rofl0r/proxychains-ng).
По умолчанию он использует прокси socks4 в 127.0.0.1:9050, но его можно изменить в файле /etc/proxychains.conf
или указать другой файл proxychains -f custom.conf
файле proxychains -f custom.conf
Ответ 9
В моем случае, так как у меня в пути был хост перехода или хост Bastion, и поскольку подписи на этих узлах Bastion изменились с момента их импорта в файл known_hosts, мне просто нужно было удалить эти записи/строки из следующего файла:
/Users/a.abdi-kelishami/.ssh/known_hosts
Из приведенного выше файла удалите эти строки, относящиеся к узлам бастиона.
Ответ 10
Я использовал следующие строки в моем .ssh/config
(который можно заменить подходящими параметрами командной строки) под Ubuntu
Host remhost
HostName my.host.com
User myuser
ProxyCommand nc -v -X 5 -x proxy-ip:1080 %h %p 2> ssh-err.log
ServerAliveInterval 30
ForwardX11 yes
При использовании его с Msys2 после установки gnu-netcat
файл ssh-err.log
показал, что опция -X
не существует. nc --help
подтвердил это и, похоже, показал, что альтернативного варианта обработки прокси не существует.
Поэтому я установил openbsd-netcat
(после запроса pacman
удалил gnu-netcat
, поскольку он конфликтовал с openbsd-netcat
). На первый взгляд и при проверке соответствующих man-страниц openbsd-netcat
и Ubuntu netcat
кажутся очень похожими, в частности, в отношении опций -X
и -X
. С этим я связался без проблем.