我知道类似的问题已经被问过多次了,但我无法找到适合我的情况的解决方案。
我有一个自定义的 git 存储库,可通过非标准端口上的 ssh 访问;URL 类似于:
git clone ssh://[email protected]:12345/path/to/repo/project.git
该 repo 的私钥位于~/.ssh/myname.prv
。
我试图不使用密码来访问 repo,但是失败了。
我的当前~/.ssh/config
有一个节:
Host git
HostName my.repo.host
Port 12345
User myname
IdentityFile ~/.ssh/myname.prv
...但是 git 仍然要求输入 PW。
我错过了什么?
注意:如果重要的话,服务器和客户端都是相当新的 Linux 机器,并且我在命令行上工作。
答案1
我认为您误解了该文件的用途~/.ssh/config
。您有:
Host git
HostName my.repo.host
...
但是,第一行定义了要连接的主机的Host git
名称(别名)(即),以及您在命令行中指定为或 的名称。也就是说,您现在可以通过以下方式连接到您的 git 远程服务器git
ssh
git
ssh
ssh git
...你可以使用你的“自定义”主机名克隆 git repo:
git clone ssh://git/path/to/repo/project.git
请注意,您的遥控器现在将列出origin
该地址,这取决于您的ssh
配置文件。
或者,如果您希望保留my.repo.host
git 远程地址,请将您的~/.ssh/config
内容更改为:
Host my.repo.host
#HostName my.repo.host
Port 12345
User myname
IdentityFile ~/.ssh/myname.prv
(注意:HostName
在这种情况下该指令是多余的,因此我将其注释掉。)
这样,您可以使用以下方法简化远程和克隆:
git clone ssh://my.repo.host/path/to/repo/project.git