1

Я пытаюсь использовать ssh для входа на удаленные серверы, и у меня есть настройка ProxyCommand в ~/.ssh/config для использования прокси (настройка через PuTTY для подключения к VPN). ProxyCommand использует nc для подключения через прокси-сервер (как описано в ответе на вопрос Как я могу использовать SSH с прокси-сервером SOCKS 5?), Но nc не может разрешить имя хоста в IP через /etc /hosts перед отправкой на прокси, и прокси не знает, как разрешить имя хоста.

Например:

$ cat /etc/hosts
127.0.0.1       localhost
12.34.56.78     hostname1
12.34.56.79     hostname2


$ cat ~/.ssh/config
ProxyCommand /usr/bin/nc -x 127.0.0.1:7777 %h %p

Обратите внимание, что порт 7777 настроен как динамический порт в PuTTY.

$ cat /etc/resolv.conf
lookup  file bind


$ cat /etc/nsswitch.conf
hosts:  files dns

Если я использую ssh user@12.34.56.78, то соединение установится успешно, но если я использую ssh user @ hostname1, то hostname1 будет передан прокси вместо разрешения 12.34.56.78 и соединение не будет установлено. Кто-нибудь знает о каких-либо конфигурациях, которые необходимо выполнить, чтобы разрешить определение имени хоста netcat через /etc /hosts в cygwin?

Спасибо

2 ответа2

0

Здесь происходит то, что вы используете подстановку ssh_config% h, но, согласно руководству, это не означает, что замещенное значение также будет предварительно обработано.

Но, поскольку команда проходит через оболочку, вы можете использовать подоболочку для запуска команды, которая будет выполнять разрешение имен, что-то вроде этого:

ProxyCommand /usr/bin/nc -x 127.0.0.1:7777 $(perl -MSocket -le 'print inet_ntoa inet_aton shift' %h) %p

Специальная команда любезно предоставлена https://unix.stackexchange.com/questions/71379/host-lookup-that-respects-etc-hosts

0

правильно ли разделен файл /etc /hosts с тем, какой конец строки требуется (CR или CRNL)?

nc игнорирует /etc /hosts и случайно просматривает% windir%\system32\drivers\etc\hosts?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .