Локальный SOCKS-прослушиватель полезен в одних сетях и отсутствует в других. OpenSSH может выбирать прокси-команду условно, не делая этот выбор обязательным для каждого узла.

Для OpenSSH с формой nc из OpenBSD пример клиентской конфигурации таков:

Host work-server
    HostName ssh.example.net
    User alex

Match originalhost work-server exec "nc -z -w 1 127.0.0.1 1080"
    ProxyCommand nc -X 5 -x 127.0.0.1:1080 %h %p

Match all

originalhost ограничивает проверку именем, указанным в командной строке SSH. exec совпадает, когда его команда завершается успешно. Завершающий Match all закрывает эту условную область для последующих настроек.

Это предполагает, что ни одна более ранняя действующая настройка ещё не выбрала конфликтующую прокси-команду или маршрут перехода. SSH обычно использует первое полученное значение параметра, поэтому широкое значение по умолчанию в начале может помешать более позднему условию дать ожидаемый эффект.

Прослушивающий сокет — скромное обещание

Проверка тестирует доступ по TCP к локальному порту. Она не завершает согласование SOCKS, не устанавливает нужное соединение с пунктом назначения и не доказывает, какая программа владеет этим портом. Прослушиватель может исчезнуть и после проверки.

Тайм-аут удерживает неудачную проверку в разумных пределах. Показанные параметры относятся к интерфейсу nc из OpenBSD; другие программы с тем же именем файла могут предлагать иные параметры.

Когда условие не совпадает, этот пример оставляет соединение без этого ProxyCommand, разрешая обычный маршрут. Это уместно только тогда, когда прямой доступ разрешён. Обязательная политика прокси не должна использовать проверку доступности как разрешение уйти на другой маршрут.

Имя целевого узла SSH и проверки ключа узла по-прежнему идентифицируют сервер назначения. Выбор средства транспорта не является причиной принимать неожиданный ключ узла.

Похожие статьи