Я за HTTP-прокси и пытаюсь подключиться к удаленной машине из заметки Ubuntu через ssh. Если я настрою свой .ssh/config как

Host test
HostName  55.66.77.88
ProxyCommand nc -X connect -x proxy.corp.com:8080 %h %p
User test_user

Я могу подключиться к удаленной машине. В моей сети есть другие пользователи (использующие OSX), которые могут подключаться к той же машине, добавляя IP-адрес машины в переменную no_proxy без nc в ssh/config. Если добавить машину в моем no_proxy переменного на zshenv

no_proxy="localhost,127.0.0.1,55.66.77.88"
NO_PROXY=$no_proxy

и проверьте мой терминал, переменная установлена (после экспорта):

no_proxy=localhost,127.0.0.1,55.66.77.88

но теперь я не могу подключиться к машине. Что может пойти не так? Я считаю, что переменная no_proxy игнорируется, но я не могу это проверить.

РЕДАКТИРОВАТЬ Добавление сеанса SSH без строки nc в файле конфигурации:

ssh 55.66.77.88 -v
OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /home/user/.ssh/config
debug1: /home/user/.ssh/config line 1: Applying options for *
debug1: /home/user/.ssh/config line 16: Applying options for 55.66.77.88
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to 55.66.77.88 [55.66.77.88] port 22.

и с помощью nc в файле config :

OpenSSH_6.6.1, OpenSSL 1.0.1f 6 Jan 2014
debug1: Reading configuration data /home/user/.ssh/config
debug1: /home/user/.ssh/config line 1: Applying options for *
debug1: /home/user/.ssh/config line 16: Applying options for 55.66.77.88
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Executing proxy command: exec nc -X connect -x proxy.corporation.br:8080 55.66.77.88 22
debug1: permanently_drop_suid: 1000
debug1: identity file /home/user/.ssh/id_rsa type 1
debug1: identity file /home/user/.ssh/id_rsa-cert type -1
debug1: identity file /home/user/.ssh/id_dsa type -1
debug1: identity file /home/user/.ssh/id_dsa-cert type -1
debug1: identity file /home/user/.ssh/id_ecdsa type -1
debug1: identity file /home/user/.ssh/id_ecdsa-cert type -1
debug1: identity file /home/user/.ssh/id_ed25519 type -1
debug1: identity file /home/user/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.3
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.0p1 Debian-4+deb7u2
debug1: match: OpenSSH_6.0p1 Debian-4+deb7u2 pat OpenSSH* compat 0x04000000
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Host '[55.66.77.88]:22' is known and matches the ECDSA host key.
debug1: Found key in /home/user/.ssh/known_hosts:7
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug1: Trying private key: /home/user/.ssh/id_ecdsa
debug1: Trying private key: /home/user/.ssh/id_ed25519
debug1: Next authentication method: password
user@55.66.77.88's password: 
debug1: Authentication succeeded (password).
Authenticated to 55.66.77.88 (via proxy).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LC_PAPER = pt_BR.UTF-8
debug1: Sending env LC_MONETARY = pt_BR.UTF-8
debug1: Sending env LC_TELEPHONE = pt_BR.UTF-8
debug1: Sending env LC_NAME = pt_BR.UTF-8
debug1: Sending env LANG = pt_BR.UTF-8
debug1: Sending env LC_NUMERIC = pt_BR.UTF-8
debug1: Sending env LC_MEASUREMENT = pt_BR.UTF-8
debug1: Sending env LC_TIME = pt_BR.UTF-8
debug1: Sending env LC_IDENTIFICATION = pt_BR.UTF-8
debug1: Sending env LC_ADDRESS = pt_BR.UTF-

Спасибо

1 ответ1

0

Я думаю, что вы неправильно понимаете использование переменной окружения NO_PROXY . Это означает, что вы не должны использовать HTTP прокси-сервер при подключении к хостам / доменам / IP-адресам, указанным в переменной. В случае вашего удаленного хоста на 55.66.77.88 , я полагаю, что вы действительно хотите прокси, по крайней мере, когда внутри ограничительной сети.

Когда вы запустили свой эксперимент и он не смог соединиться с IP в NO_PROXY , у вас все еще была строка ProxyCommand в вашем файле .ssh/config ? Если это так, удалите IP и попробуйте снова.

В качестве альтернативы, если вы пытаетесь избежать изменения файла конфигурации ssh для каждого хоста, которому нужен прокси, вы можете добавить директиву к записи Host * которая будет прокси через пользовательский скрипт. Этот сценарий может подключаться через прокси только к тем хостам, к которым он не может подключиться напрямую. У меня есть скрипт на моем github (называемый ssh-proxy), который делает это и многое другое.

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