Eu trabalho em uma organização com requisitos de segurança (desnecessariamente) rigorosos. No ano passado, configuramos um servidor SVN em uma máquina em nuvem. Os requisitos para essa máquina determinavam que o único método de acesso aprovado fosse a autenticação de dois fatores por meio de um token RSA.
Isso significava que não poderíamos usar svn + ssh: //, porque os desenvolvedores teriam que usar seus tokens RSA inconvenientes para cada ação do SVN. Mas nós não poderíamos usar ingenuamente o svn: //, porque (Deus o proteja) as pessoas poderiam acessar os dados no servidor SVN sem usar um token de dois fatores.
Eventualmente, desenvolvemos um sistema complexo de encaminhamento de porta. O servidor tinha um processo típico do daemon svnserve
ouvindo as conexões no 3690, mas o firewall bloqueava todas as conexões para essa porta, exceto de localhost
. Se o usuário não estiver no centro, ele deverá entrar primeiro na VPN. O usuário criaria um túnel SSH para o servidor e encaminhará a porta (digamos) 6789 para a porta 3690 (a porta SVN) no servidor (em outras palavras, ssh user@server -L 6789:localhost:3690
). Enquanto a sessão SSH permanecesse aberta, o usuário poderia usar URLs svn regulares fazendo referência a essa porta: por exemplo, svn://localhost:6789/path/to/repository/trunk
.
Isto funcionou durante cerca de um ano, tanto para sistemas * nix como Windows (com PuTTY e TortoiseSVN). Agora, temos um problema com um novo membro da equipe que usa o Windows / TortoiseSVN. Ela pode entrar VPN e iniciar a sessão SSH com o encaminhamento de porta, mas quando ela vai realmente verificar algo (veja o caminho de exemplo acima), ela recebe a seguinte mensagem: "Conexão de rede fechada inesperadamente". A sessão do PuTTY não exibe nenhuma mensagem de erro ou final, então não tenho certeza se é culpa do servidor. E eu testei independentemente a habilidade de sua máquina de se escutar na porta 6789.
Não tenho certeza de qual componente do sistema está em falta aqui: TortoiseSVN, PuTTY, as configurações de firewall do seu computador, as configurações de firewall da sua rede, as configurações de firewall do nosso servidor ou o processo svnserve. Eu suspeito que seja algo sobre suas configurações de firewall, porque essa é a única coisa que ela tem diferente do que todo mundo. Mas como o firewall poderia impedir o tráfego através de um túnel encaminhado pela porta SSH? Tudo deve passar pela porta 22, por isso deve passar se a conexão SSH pode ser estabelecida com sucesso em primeiro lugar. Estou perplexo.
Então:
Tags ssh svn putty ssh-tunnel tortoisesvn