Specify an SSH key for git push for a given domain
我有以下用例:我希望能够使用用户
(除此之外:Gitolite根据密钥区分推送的用户,因此在访问、所有权和审核方面,用户@server字符串对于不同的用户是相同的,这不是问题。)
即使是相同的用户和主机,他们仍然可以在
1 2 3 4 5 6 7 8 9 10 11 | Host gitolite-as-alice HostName git.company.com User git IdentityFile /home/whoever/.ssh/id_rsa.alice IdentitiesOnly yes Host gitolite-as-bob HostName git.company.com User git IdentityFile /home/whoever/.ssh/id_dsa.bob IdentitiesOnly yes |
那么你就不是在使用和
1 2 | git remote add alice git@gitolite-as-alice:whatever.git git remote add bob git@gitolite-as-bob:whatever.git |
注
你想包括一个选项,以防止使用默认
在一个替代的方法是提供通过使用longair以上标志是愿意在任何Git命令的别名,在任何远程SSH密钥,一个替代。库是基本的转换器运行的SSH身份当Git命令。
相对优势的主机别名的方法在其他的回答:
- 想与任何Git命令或别名,甚至如果你不能
remote 明确指定位置。 - 容易的工作,有许多库,因为你只需要设置一次通过它的客户端机器,需要在每个客户端机器通过存储一次。
我用一个小的脚本和一
1 | git admin push |
一推使用替代默认的远程SSH密钥("admin")。再次,你可以使用任何命令(不只是这一
步骤1:创建SSH密钥的替代选择的案例集A的密码,你这样做对其他人的机器。
步骤2:创建一个所谓的"ssh-as.sh脚本运行"的东西使用SSH,SSH密钥,而不使用一个给定的比默认的:
1 2 | #!/bin/bash exec ssh ${SSH_KEYFILE+-i"$SSH_KEYFILE"}"$@" |
步骤3:创建一个所谓的"git-as.sh脚本"命令运行git使用给定的SSH密钥。
1 2 | #!/bin/bash SSH_KEYFILE=$1 GIT_SSH=${BASH_SOURCE%/*}/ssh-as.sh exec git"${@:2}" |
步骤4:添加到别名(使用一些适当的"路径_ _脚本到你下面_"):
1 2 | # Run git commands as the SSH identity provided by the keyfile ~/.ssh/admin git config --global alias.admin \!"PATH_TO_SCRIPTS_DIR/git-as.sh ~/.ssh/admin" |
更多的细节在:http://noamlewis.wordpress.com/13/01/24/Git管理在别名一运行git命令as a和SSH身份/
您可以使用git环境变量
1 | GIT_SSH_COMMAND='ssh -i ~/.ssh/your_private_key' git submodule update --init |
用您要使用的ssh私钥路径替换
一个基于Unix的系统(Linux、BSD、Mac OS X),默认的身份是存储在目录家/美元。2、文件:
private key: $HOME/.ssh/id_rsa
public key: $HOME/.ssh/id_rsa.pub
如果你有你想使用另一个密钥,例如美元的家庭/。/你有_部署的密钥,使用
它是恼人的。你可以在下面的行添加到您的家/美元.bash _概况:
ssh-add ~/.ssh/deploy_key
ssh-add ~/.ssh/id_rsa
所以每一次你使用
你可以添加多个键就像在你家/美元.bash _文件的配置文件。
另一个选择是使用SSH SSH身份识别,你的设法。
它使用不同的密钥的自动负载和电流基于你的工作目录,SSH和期权,等等……这意味着你可以很容易有一个工作/目录/目录和私人密钥是使用不同的transparently最终与SSH和身份。
我在使用Git Bash Win7。以下为我工作。
创建一个配置文件在配置或~ /。/ C /用户/用户_ [名称]的_ /。/配置。文件中的回车:
1 2 | Host your_host.com IdentityFile [absolute_path_to_your_.ssh]\id_rsa |
我想有一个URL的主机和不只是一个"名称"或参考文献为您的主机。例如,
1 2 | Host github.com IdentityFile c:/users/[user_name]/.ssh/id_rsa |
位置路径可以被写在C / / /用户/用户_ [姓名]…………………格式
解决方案提供的是一scalzo佐丹奴大太。stackoverflow.com http:/ / / / / 9149518 1738546
您可能需要删除(或注释掉)默认主机配置
如果使用Git版本的Windows下的SSH,SSH的配置文件中的形象线的样子
1 | IdentityFile /c/Users/Whoever/.ssh/id_rsa.alice |
在
检查,在Git Bash做吗
1 2 | cd ~/.ssh pwd |
在文件配置密钥ssh中指定最多的是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # Default GitHub user Host one HostName gitlab.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/key-one IdentitiesOnly yes #two user Host two HostName gitlab.com User git PreferredAuthentications publickey IdentityFile ~/.ssh/key-two IdentitiesOnly yes |