Como configurar o SVN / SSH com SSH na porta não padrão?

14

Eu configurei o SSH para estar na porta 20000. Quando tento:

svn co svn+ssh://server.com:20000/home/svn/proj1 proj1 --username jm

eu recebo

svn: To better debug SSH connection problems, remove the -q option
from 'ssh' in the [tunnels] section of your Subversion configuration
file. svn: Network connection closed unexpectedly

Eu acho que preciso dizer ao SVN para usar a porta 20000 também?

Estou no Ubuntu 11.10

Jiew Meng
fonte

Respostas:

19

Você pode definir um novo 'túnel' na sua configuração do Subversion ( ~/.subversion/config). Encontre a seção [tunnels]lá e defina algo como:

[tunnels]
foo = ssh -p 20000

Depois, você pode entrar em contato com seu repositório através da URL svn+foo://server.com/home/svn/proj1 proj1.

u-punkt
fonte
Além disso, se você deseja substituir a svn+sshporta do protocolo padrão , basta definir ssh = ssh -p 20000. Isso pressupõe que você modificou /etc/ssh/sshd_configno servidor para que Port 22seja substituído por Port 20000.
Cloud
1
@Dogbert: ele não funciona como você diz: Eu tentei ssh = ssh -p 20000e depois tentou check-out svn+ssh://example.org/var/svn-repos/mydev/trunk, mas isso ainda tenta na porta 22
rubo77
13

Sempre que precisar acessar um servidor ssh em uma porta não padrão ou com um nome de usuário diferente, você poderá definir um alias em ~/.ssh/config.

Host mysvn
HostName server.com
Port 20000
User jm

Então corra svn co svn+ssh://mysvn/home/svn/proj1.

Gilles 'SO- parar de ser mau'
fonte
4

Se, por algum motivo, você não puder editar o ~/.subversion/configarquivo, poderá especificar a porta na linha de comando:

svn co svn+ssh://joe@myserver/myrepo/ --config-option="config:tunnels:ssh=ssh -p 20000"

mas você deve fazer esta opção sempre que executar o svncomando. Isso pode fazer sentido para um agente de construção.

swdev
fonte
0

Caso seu arquivo ~ / .subversion / config não tenha o túnel ssh definido, você poderá substituir o comando ssh por chamada usando a variável de ambiente SVN_SSH

SVN_SSH='ssh -p 20000' svn co svn+ssh://server.com/home/svn/proj1 proj1 --username jm

Por exemplo

deo@fox:~$ SVN_SSH='ssh -v -p 20000' svn ls svn+ssh://svn/
OpenSSH_7.9p1 Debian-10, OpenSSL 1.1.1c  28 May 2019
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to svn [192.168.177.2] port 20000.
debug1: connect to address 192.168.177.2 port 20000: Connection refused
ssh: connect to host svn port 20000: Connection refused
svn: E170013: Unable to connect to a repository at URL 'svn+ssh://svn'
svn: E210002: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
svn: E210002: Network connection closed unexpectedly

Isso não vai funcionar se o seu arquivo ~ / .subversion / config não definir túnel ssh, no arquivo de configuração caso tem precedência. (O que é bastante incomum. Normalmente é o contrário, as variáveis ​​de ambiente geralmente têm precedência sobre os arquivos de configuração)

Egor Duda
fonte