我有各种系统的多个ssh配置文件夹,例如:
ssh -F ~/.ssh/system-a/config user@system-a
ssh -F ~/.ssh/system-b/config user@system-b
每个文件夹都有一个配置文件和一组身份文件,如此
Host system-a
HostName <some_hostname>
User <some_username>
IdentityFile ~/.ssh/system-a/keys/system-a.pem
在执行git任务时如何告诉git使用某个ssh配置文件或某个ssh密钥?
理想情况下,如果可以,我希望每个git项目都这样做。
答案 0 :(得分:8)
在命令行上,您可以更改当前存储库的Git配置:
git config core.sshCommand "ssh -F ~/.ssh/system-a/config"
或本地存储库中的.git/config
到[core]
部分:
sshCommand = "ssh -F ~/.ssh/system-a/config"
这仅适用于git 2.10及更高版本。否则,需要使用环境变量$GIT_SSH_COMMAND
进行设置,例如:
GIT_SSH_COMMAND="ssh -F ~/.ssh/system-a/config" git pull
答案 1 :(得分:1)
正如Andrejs Cainikovs和Jakuje指出的那样,可以使用多个ssh-config文件,其中最近有git
个。
但是,使用具有多个配置的单个ssh-config文件,您可以实现几乎相同的结果,可能所有引用单个真实主机:
Host SOMELABEL
HostName <some_hostname>
User <some_username>
IdentityFile ~/.ssh/system-a/keys/system-a.pem
Host OTHERLABEL
HostName <other_hostname>
User <other_username>
IdentityFile ~/.ssh/system-b/keys/system-a.pem
然后克隆repos,如:
git clone SOMELABEL:foo/bar.git
git clone OTHERLABEL:frobnozzel.git
对于 <some_username>@<some_hostname>
存储库,这将~/.ssh/system-a/keys/system-a.pem
与bar
中的ssh-key一起使用,而对于ssh,它将使用<other_username>@<other_hostname>
-~/.ssh/system-b/keys/system-a.pem
中的 frobnozzel
存储库的密钥。
答案 2 :(得分:1)