Question

To clone a repository managed by gitolite one usually uses following syntax

git clone gitolite@server:repository

This tells the SSH client to connect to port 22 of server using gitolite as user name. When I try it with the port number:

git clone gitolite@server:22:repository

Git complains that the repository 22:repository is not available. What syntax should be used if the SSH server uses a different port?

Was it helpful?

Solution

The “SCP style” Git URL syntax (user@server:path) does not support including a port. To include a port, you must use an ssh:// “Git URL”. For example:

ssh://gitolite@server:2222/repository

Note: As compared to gitolite@server:repository, this presents a slightly different repository path to the remote end (the absolute /repository instead of the relative path repository); Gitolite accepts both types of paths, other systems may vary.


An alternative is to use a Host entry in your ~/.ssh/config (see your ssh_config(5) manpage). With such an entry, you can create an “SSH host nickname” that incorporates the server name/address, the remote user name, and the non-default port number (as well as any other SSH options you might like):

Host gitolite
    User     gitolite
    HostName server
    Port     2222

Then you can use very simple Git URLs like gitolite:repository.


If you have to document (and or configure) this for multiple people, I would go with ssh:// URLs, since there is no extra configuration involved.

If this is just for you (especially if you might end up accessing multiple repositories from the same server), it might be nice to have the SSH host nickname to save some typing.

OTHER TIPS

It is explained in great detail here: https://github.com/sitaramc/gitolite/blob/pu/doc/ssh-troubleshooting.mkd#_appendix_4_host_aliases

Using a "host" para in ~/.ssh/config lets you nicely encapsulate all this within ssh and give it a short, easy-to-remember, name. Example:

host gitolite
    user git
    hostname a.long.server.name.or.annoying.IP.address
    port 22
    identityfile ~/.ssh/id_rsa

Now you can simply use the one word gitolite (which is the host alias we defined here) and ssh will infer all those details defined under it -- just say ssh gitolite and git clone gitolite:reponame and things will work.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top