SSH através de proxy com a variável nc e no_proxy

0

Estou atrás de um proxy HTTP e estou tentando conectar a uma máquina remota a partir da minha nota do Ubuntu via ssh. Se eu configurar meu .ssh / config como

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

Eu posso conectar-me à máquina remota. Existem outros usuários na minha rede (usando o OSX) que podem se conectar à mesma máquina adicionando o IP da máquina à variável no_proxy , sem o nc em ssh / config. Se eu adicionar a máquina na minha variável no_proxy em zshenv :

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

e verifique meu terminal, a variável está definida (após a exportação):

no_proxy=localhost,127.0.0.1,55.66.77.88

mas agora não consigo me conectar à máquina. O que pode estar dando errado? Acredito que a variável no_proxy está sendo ignorada, mas não posso testá-la.

EDIT Adicionando uma sessão ssh sem a linha nc no arquivo de configuração:

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.

e com o nc no arquivo 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
[email protected]'s password: 
debug1: Authentication succeeded (password).
Authenticated to 55.66.77.88 (via proxy).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
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-

Obrigado

    
por Ivan 13.11.2015 / 19:29

1 resposta

0

Acho que você está entendendo mal o uso da variável de ambiente NO_PROXY . Isso significa que você deve não usar o servidor proxy HTTP ao se conectar aos hosts / domínios / IPs listados na variável. No caso de seu host remoto em 55.66.77.88 , acredito que você faça deseja o proxy, pelo menos quando estiver dentro da rede restritiva.

Quando você executou sua experiência e não conseguiu se conectar com o IP em NO_PROXY , você ainda tinha a linha ProxyCommand no seu arquivo .ssh/config ? Nesse caso, remova o IP e tente novamente.

Como alternativa, se você estiver tentando evitar alterar seu arquivo de configuração ssh para cada host que precisa do proxy, você poderá adicionar uma diretiva a uma entrada Host * que fará proxy por meio de um script personalizado. Esse script pode se conectar por meio do proxy apenas a hosts que não podem ser acessados diretamente. Eu tenho um script no meu github (chamado ssh-proxy) que faz isso e muito mais.

    
por 16.11.2015 / 18:12