也许是一种相当不寻常的情况,但我想指定一个在执行 shell 时使用的私有 SSH 密钥(git
) 来自本地计算机的命令。
基本上是这样的:
git clone [email protected]:TheUser/TheProject.git -key "/home/christoffer/ssh_keys/theuser"
或者甚至更好(用 Ruby 语言):
with_key("/home/christoffer/ssh_keys/theuser") do
sh("git clone [email protected]:TheUser/TheProject.git")
end
我见过使用以下命令连接到远程服务器的示例Net::SSH
使用指定的私钥,但这是本地命令。是否可以?
这些解决方案都不适合我。
相反,我详细阐述了 @Martin v. Löwis 提到的设置config
SSH 文件。
SSH 将查找用户的~/.ssh/config
文件。我的设置为:
Host gitserv
Hostname remote.server.com
IdentityFile ~/.ssh/id_rsa.github
IdentitiesOnly yes # see NOTES below
我添加了一个远程 git 存储库:
git remote add origin git@gitserv:myrepo.git
然后 git 命令对我来说可以正常工作。
git push -v origin master
NOTES
- The
IdentitiesOnly yes
是必需的,以防止 SSH 默认行为发送与每个协议的默认文件名匹配的身份文件。如果您有一个名为~/.ssh/id_rsa
将在您之前尝试~/.ssh/id_rsa.github
没有这个选项。
参考
- 在一个客户端上使用多个 SSH 私钥的最佳方式
- 我怎样才能阻止 ssh 提供错误的密钥
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)