threads / discuss / 2730

How can I specify a non-standard TCP port for a git+ssh connection?

Subject: How can I specify a non-standard TCP port for a git+ssh connection?

## tl;dr

2 messages between Dec 2, 2005 and Dec 2, 2005.

replies: 1people: 2as markdown or json

Andreas Jochens· Dec 2, 2005, 12:48 UTC · lore
Hello,

is there a simple way to specify a non-standard TCP port for a git+ssh connection?

The following small patch would allow to use an URL like 'git+ssh://user@hostname:port/path' to specify an arbitrary port for the ssh connection.

Regards Andreas Jochens

 connect.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/connect.c b/connect.c
index 93f6f80..4b640dd 100644
--- a/connect.c
+++ b/connect.c
@@ -560,7 +560,7 @@ static int git_proxy_connect(int fd[2], 
 int git_connect(int fd[2], char *url, const char *prog)
 {
 	char command[1024];
-	char *host, *path = url;
+	char *host, *port = NULL, *path = url;
 	char *colon = NULL;
 	int pipefd[2][2];
 	pid_t pid;
@@ -597,6 +597,10 @@ int git_connect(int fd[2], char *url, co
 			path = strdup(ptr);
 
 		*ptr = '\0';
+		if ((colon = strchr(host, ':'))) {
+			*colon = '\0';
+			port = colon + 1;
+		}
 	}
 
 	if (protocol == PROTO_GIT) {
@@ -626,7 +630,11 @@ int git_connect(int fd[2], char *url, co
 				ssh_basename = ssh;
 			else
 				ssh_basename++;
-			execlp(ssh, ssh_basename, host, command, NULL);
+			if (port)
+				execlp(ssh, ssh_basename, "-p", port, host, 
+				       command, NULL);
+			else
+				execlp(ssh, ssh_basename, host, command, NULL);
 		}
 		else
 			execlp("sh", "sh", "-c", command, NULL);
Linus Torvalds· Dec 2, 2005, 16:07 UTC · re: Andreas Jochens · lore

Re: How can I specify a non-standard TCP port for a git+ssh connection?

On Fri, 2 Dec 2005, Andreas Jochens wrote:
> 
> is there a simple way to specify a non-standard TCP port for a git+ssh
> connection? 
Use the ".ssh/config" file ;)
> The following small patch would allow to use an URL like 
> 'git+ssh://user@hostname:port/path' to specify an arbitrary 
> port for the ssh connection.

Maybe. On the other hand, I think we'd be better off with perhaps some way to just specify arbitrary options to the "ssh" program. Sometimes you might want to specify identity-files etc too.

		Linus

← back to recent threads