Pergunta

No meu instituto, tenho acesso restrito à Internet apenas por meio de um proxy.Estou enfrentando sérios problemas ao estabelecer uma conexão ssh com o sistema de revisão de código Gerrit ( git.eclipse.org ) e, portanto, não consigo enviar nenhum novo patch para Gerrit.

Para realizar a tarefa acima, tentei primeiro encapsular SSH sobre HTTP usando saca-rolhas, seguindo as instruções fornecidas aquiIsto é o que eu fiz:

  1. Saca-rolhas instalado
  2. Adicionado ProxyCommand à configuração ssh
  3. Adicionado nome de usuário de proxy e senha de autenticação de proxy ao arquivo ~/.ssh/proxyauth

Depois disto, Consegui configurar um ssh conectando-se ao github e também alterações push/pull em meu repositório do github.

Mas não consigo me conectar ao gerrit através do ssh.Aqui está o erro exato:

$ssh -p 29418 jgupta@git.eclipse.org
Proxy could not open connnection to git.eclipse.org:  Forbidden
ssh_exchange_identification: Connection closed by remote host

Estou usando Linux (RHEL 6.3 Beta x86_64) e git 1.7.11.1 (mais recente).
O conteúdo do meu ~/.ssh/config é:

Host github.com
  Hostname ssh.github.com
  Port 443
  ProxyCommand corkscrew 202.141.80.22 3128 %h %p ~/.ssh/proxyauth

Host *
  ProxyCommand corkscrew 202.141.80.22 3128 %h %p ~/.ssh/proxyauth

O resultado detalhado (erro) da solicitação ssh para git.eclipse.org é:

penSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010
debug1: Reading configuration data /home/jayant/.ssh/config
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Executing proxy command: exec corkscrew 202.141.80.22 3128 git.eclipse.org 29418 ~/.ssh/proxyauth
debug1: permanently_drop_suid: 500
debug1: identity file /home/jayant/.ssh/identity type -1
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug2: key_type_from_name: unknown key type 'Proc-Type:'
debug2: key_type_from_name: unknown key type 'DEK-Info:'
debug2: key_type_from_name: unknown key type '-----END'
debug1: identity file /home/jayant/.ssh/id_rsa type 1
debug1: identity file /home/jayant/.ssh/id_dsa type -1
Proxy could not open connnection to git.eclipse.org:  Forbidden
ssh_exchange_identification: Connection closed by remote host

O URL remoto definido em meu repositório git é:

$git remote -v
origin  http://git.eclipse.org/gitroot/etrice/org.eclipse.etrice.git (fetch)
origin  http://git.eclipse.org/gitroot/etrice/org.eclipse.etrice.git (push)
review  ssh://jgupta@git.eclipse.org:29418/etrice/org.eclipse.etrice.git (fetch)
review  ssh://jgupta@git.eclipse.org:29418/etrice/org.eclipse.etrice.git (push)

Há alguns dias, quando tive acesso direto à Internet, consegui me conectar via ssh e também enviar meus patches, com as configurações remotas acima.

Tentei excluir o conteúdo deknown_hosts, mas isso não ajudou.
Isso é um problema no servidor Gerrit?

Agradeço antecipadamente por sua ajuda.

Foi útil?

Solução

Sinto que o problema se deve à configuração do servidor sem suporte.Isto é o que encontrei em uma postagem de blog na web:

A idéia básica é que você de alguma forma invocará o SOCAT (um utilitário semelhante ao saca -rolhas), que negociará com o servidor proxy HTTP (s) usando o método Connect para obter um tubo limpo ao servidor no lado oposto.
...
Observando que muitos firewalls corporativos bloqueiam o acesso ao método Connect em portas diferentes de 443, o pessoal do Github tem um servidor SSH ouvindo 443 se você usar o host "ssh.github.com", para substituir o nome do host e o nome do host e o Porta na estrofe de configuração SSH acima, conforme apropriado, e você está pronto

O extrato acima foi retirado de aqui.

O que eu sinto é que, como o gerrit está sendo executado na porta 29418 e como os proxies geralmente permitem acesso ao método CONNECT apenas para solicitação na porta 443 do host remoto (servidor), a solicitação ssh para o gerrit não pode ser negociada no proxy.

Isso não acontece com o github, pois ele atende solicitações ssh na porta 443 e os utilitários do cliente (como saca-rolhas) podem negociar proxies enviando solicitação de envio na porta 443 do servidor remoto (como feito no instantâneo de .ssh/config acima) .

Alguém conhece algum outro método para realizar a tarefa acima?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top