I have the following use case: I would like to be able to push to git@git.company.com:gitolite-admin using the private key of user gitolite-admin, while I want to push to git@git.company.com:some_repo using 'my own' private key. AFAIK, I can't solve this using ~/.ssh/config, because the user name and server name are identical in both cases. As I mostly use my own private key, I have that defined in ~/.ssh/config for git@git.company.com. Does anyone know of a way to override the key that is used for a single git invocation?
(另外:gitolite根据键来区分谁在进行推送,所以就访问、所有权和审计而言,user@server字符串对于不同的用户是相同的,这不是问题。)
正如其他人提到的,核心。sshCommand config可以覆盖SSH密钥和其他参数。
下面是一个示例,其中有一个名为~/的替代键。Ssh /workrsa,并希望将其用于~/work下克隆的所有存储库。
在~/work下创建一个新的.gitconfig文件:
[core]
sshCommand = "ssh -i ~/.ssh/workrsa"
在全局git配置中~/。gitconfig,添加:
[includeIf "gitdir:~/work/"]
path = ~/work/.gitconfig
我在Win7上使用Git Bash。下面的方法对我很有效。
在~/处创建一个配置文件。Ssh /config或c:/users/[your_user_name]/. Ssh /config。在文件中输入:
Host your_host.com
IdentityFile [absolute_path_to_your_.ssh]\id_rsa
我想主机必须是一个URL,而不仅仅是一个“名称”或参考您的主机。例如,
Host github.com
IdentityFile c:/users/[user_name]/.ssh/id_rsa
也可以写入“/c/users/[user_name]/....”格式
Giordano Scalzo提供的解决方案也很棒。
https://stackoverflow.com/a/9149518/1738546