Я не уверен, что этот вопрос лучше всего подходит здесь, на ServerFault, или на SuperUser. Если подумать об этом логически, я думаю, что это вопрос системного администратора, поэтому я помещаю его здесь, и если моды думают, что он должен двигаться, то извиняюсь за неправильное предположение!
Как бы то ни было - у меня есть сервер за пределами сайта, и я застрял на частном IP без доступа к сети, кроме как через прокси-сервер HTTP или прокси-сервер SOCKS 4/5. Я использую OS X, и мне бы хотелось, чтобы команда ssh с терминала каким-то образом работала через один из этих двух прокси-серверов для выхода на удаленный сервер. Порт SSH на удаленном сервере нестандартный, хотя я сомневаюсь, что это будет иметь большое значение.
Да, это можно сделать. Видеть этот сайт для одного примера.
В основном вы используете свой местный ~/.ssh/config
flle (или /etc/ssh/ssh_config
если вам нужно, чтобы он был общесистемным), чтобы указать ProxyCommand
директива для хостов, к которым вам нужно пройти через прокси.
Вы также можете использовать nc
(который поставляется с OS X) вместо программного обеспечения, которое они упоминают на этом сайте.
Обратитесь к ssh_config(5)
и nc(1)
справочные страницы для получения дополнительной информации.
Я знаю, что это старый пост, но я думаю, что этот ответ все равно будет полезен:
Вы можете очень легко сделать это через прокси-сервер 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).
Немного поздно, но обратите внимание, что вы можете использовать другие ответы здесь, в самой команде SSH с флагом -o. Это было полезно для меня, так как мне могло понадобиться или не потребоваться использовать прокси (в зависимости от того, в каком офисе я нахожусь), поэтому я действительно не хочу редактировать мои файлы конфигурации ssh.
ssh -o "ProxyCommand nc -X 5 -x myproxy:myproxyport %h %p" myuser@cantaccessthiswithoutproxy.com