Wie konfiguriere ich SVN / SSH mit SSH auf einem Nicht-Standard-Port?

14

Ich habe SSH für Port 20000 konfiguriert. Wenn ich versuche:

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

Ich bekomme

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

Ich denke, ich muss SVN mitteilen, dass Port 20000 auch verwendet werden soll.

Ich bin auf Ubuntu 11.10

Jiew Meng
quelle

Antworten:

18

Sie können einen neuen 'Tunnel' in Ihrer Subversion-Konfiguration definieren ( ~/.subversion/config). Finde dort den Abschnitt [tunnels]und definiere so etwas wie:

[tunnels]
foo = ssh -p 20000

Anschließend können Sie Ihr Repository über die URL kontaktieren svn+foo://server.com/home/svn/proj1 proj1.

u-punkt
quelle
Wenn Sie svn+sshden Port des Standardprotokolls überschreiben möchten , definieren Sie einfach ssh = ssh -p 20000. Dies setzt voraus, dass Sie /etc/ssh/sshd_configauf dem Server Änderungen vorgenommen haben, die Port 22durch ersetzt wurden Port 20000.
Wolke
1
@Dogbert: es funktioniert nicht wie du sagst: Ich habe versucht ssh = ssh -p 20000und dann versucht, zu überprüfen, svn+ssh://example.org/var/svn-repos/mydev/trunkaber dies versucht immer noch auf Port 22
Rubo77
13

Wann immer Sie auf einen SSH-Server über einen nicht standardmäßigen Port oder mit einem anderen Benutzernamen zugreifen müssen, können Sie einen Alias ​​in definieren ~/.ssh/config.

Host mysvn
HostName server.com
Port 20000
User jm

Dann lauf svn co svn+ssh://mysvn/home/svn/proj1.

Gilles 'SO - hör auf böse zu sein'
quelle
3

Wenn Sie die ~/.subversion/configDatei aus irgendeinem Grund nicht bearbeiten konnten , können Sie den Port in der Befehlszeile angeben:

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

Sie müssen diese Option jedoch jedes Mal ausführen, wenn Sie den svnBefehl ausführen . Dies kann für einen Build-Agenten sinnvoll sein.

swdev
quelle
0

Falls in Ihrer ~ / .subversion / config-Datei kein SSH- Tunnel definiert ist, können Sie den SSH-Befehl auf Aufrufbasis mit der Umgebungsvariablen SVN_SSH überschreiben

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

Beispielsweise

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

Das wird nicht funktionieren , wenn Ihr ~ / .subversion / config - Datei wird SSH - Tunnel definieren, in diesem Fall config - Datei hat Vorrang. (Was eher ungewöhnlich ist. Normalerweise ist es umgekehrt. Umgebungsvariablen haben normalerweise Vorrang vor Konfigurationsdateien.)

Egor Duda
quelle