我的VPS提供商建议我将SSH端口保留为默认分配的自定义端口号(不是22)。事情是我知道我可以在创建远程配置时给出端口号,但是在做git克隆时我似乎无法做同样的事情。我正在使用gitolite所以我克隆命令看起来像:
git clone git@mydomain.com:gitolite-admin
有没有办法将其转换为使用自定义ssh端口号?
我还应该提到我在windows上运行cygwin。我看到多个地方都说将自定义端口添加到~/.ssh/config
文件中,如
Host mydomain.com
Port 12345
然而在cygwin中,该文件似乎不存在。
答案 0 :(得分:278)
git clone ssh://git@mydomain.com:[port]/gitolite-admin
请注意,端口号应该没有方括号:[]
答案 1 :(得分:8)
当您需要主目录中的相对路径时,请使用以下奇怪的语法:
ssh://[user@]host.xz[:port]/~[user]/path/to/repo
例如,如果repo位于服务器/home/jack/projects/jillweb
上的jill.com
中,并且您正在jack
以[{1}}监听端口4242登录:
sshd
以ssh://jack@jill.com:4242/~/projects/jillweb
登录时(假设您拥有文件权限):
jill
答案 2 :(得分:7)
以上答案很好,但对于像我这样的新git用户并不清楚。因此,经过一番调查,我提供了这个新答案。
当配置文件不存在时,您可以创建一个。除了port
之外,配置文件还可以包含其他ssh配置选项:user
IdentityFile
,依此类推,配置文件看起来像
Host mydomain.com
User git
Port 12345
如果您正在运行linux,请注意配置文件必须具有严格的权限:用户必须具有读/写权限,其他人不能访问
太酷了,我们唯一应该知道的是git中ssh url有两种语法
ssh://[user@]host.xz[:port]/path/to/repo.git/
[user@]host.xz:path/to/repo.git/
的scp 默认情况下,Gitlab和Github将显示类似于语法的scp 网址,我们无法提供自定义ssh端口。因此,为了更改ssh端口,我们需要使用标准语法
答案 3 :(得分:4)
(更新:几年后Google和Qwant"航空公司"在搜索" git非默认ssh端口时仍然将我发送到此处#34;) 在较新的git版本中可能更好的方法是使用GIT_SSH_COMMAND ENV.VAR,如:
GIT_SSH_COMMAND="ssh -oPort=1234 -i ~/.ssh/myPrivate_rsa.key" \
git clone myuser@myGitRemoteServer:/my/remote/git_repo/path
这具有允许任何其他ssh合适选项(端口,priv.key,IPv6,PKCS#11设备......)的附加优势。
答案 4 :(得分:1)
Github 此后发布了 a helpful article 解释如何解决此问题。