SSH через прокси SOCKS? (клиент = OpenSSH OS X)

11

Я не уверен, что этот вопрос лучше всего подходит здесь на ServerFault или более на SuperUser. Думая об этом логически, я думаю, что это вопрос системного администратора, поэтому я задаю его здесь, и если моды считают, что он должен двигаться, то извиняюсь за неправильное предположение!

В любом случае - у меня есть сервер вне сайта, и я застрял на частном IP-адресе без доступа к сети, кроме как через HTTP-прокси или SOCKS 4/5 прокси. Я использую OS X, и я хотел бы, чтобы команда ssh с терминала как-то работала через один из этих двух прокси-серверов для выхода на удаленный сервер. Порт SSH на удаленном сервере нестандартный, хотя я сомневаюсь, что это будет иметь большое значение.

Барт Б
источник

Ответы:

5

Я знаю, что это древний пост, но я думаю, что этот ответ все еще будет полезен:

Вы можете очень легко сделать это через прокси-сервер SOCKS с NetCat (nc). В вашем ~ / .ssh / config вы просто добавляете две строки, одна из которых указывает, к каким хостам вы хотите подключиться через прокси, и строка, в которой указывается, как подключиться через nc. Вот так:

~ / .ssh / config: (протестировано на OSX, должно работать и на Linux)

Host 10.*
    ProxyCommand nc -X 5 -x PROXY_HOST:1080 %h %p

Замените "PROXY_HOST" на нужную для вашей установки.

Это приводит к тому, что ssh вместо непосредственного открытия TCP-соединения с целевым хостом (в данном случае все, что начинается с «10» - может быть IP-адресом или именем хоста), запускает команду «nc» с указанными параметрами, чтобы фактически установите соединение TCP, а SSH сделает все остальное. Очень кстати.

«5» - это версия SOCKS, «1080» - это прокси-порт, «% h» SSH заменяет хост, введенный в командной строке, а «% p» SSH заменяет порт из командной строки (или по умолчанию). 22).

BGP
источник
7

Да, это можно сделать. Смотрите этот сайт для одного примера.

В основном вы используете свой локальный ~/.ssh/configflle (или, /etc/ssh/ssh_configесли вам нужно, чтобы он был общесистемным), чтобы указать ProxyCommandдирективу для хостов, к которым вам нужно пройти через прокси, чтобы добраться до них.

Вы также можете использовать nc(поставляется с OS X) вместо программного обеспечения, которое они упоминают на этом сайте.

Обратитесь к страницам справки ssh_config(5)и nc(1)man для получения дополнительной информации.

voretaq7
источник
1
К сожалению, страница, на которую вы ссылаетесь, устарела, а ссылка на исправленную версию двоичного файла устарела - ошибка 404.
Барт Б
1
О, как это неловко - я нашел ссылку на работающую прокси-команду, которая все еще компилируется в OS X 10.7 Lion и все еще работает, НА МОЕМ СВОЕМ БЛОГЕ! В мою защиту посту 6 лет, но все же. Рабочие инструкции здесь: bartbusschots.ie/blog/?p=184
Барт Б
2
@BartB «Все, что вы написали больше недели назад, возможно, было написано кем-то другим». - Это аксиома программирования, но она верна и для системных администраторов и блогеров.
voretaq7
3

Немного поздно, но обратите внимание, что вы можете использовать другие ответы здесь в самой команде SSH с флагом -o. Это было полезно для меня, так как я мог или не мог бы использовать прокси (в зависимости от того, в каком офисе я нахожусь), поэтому я не хочу редактировать мои файлы конфигурации ssh.

ssh -o "ProxyCommand nc -X 5 -x myproxy:myproxyport %h %p" myuser@cantaccessthiswithoutproxy.com
EdmCoff
источник