赞
踩
首先确认自己系统内有没有 ssh key。
bash复制代码cd ~/.ssh
ls *.pub # 列出所有公钥文件
id_rsa.pub
若有,确认使用当前 key 或者生成新 key,若没有,生成新 key。由于我需要登录两个帐号,所以在已经存在的 key 的基础上,再生成一个 key。
生成 ssh key
ssh-keygen -t rsa -C "your-email-address"
-t 是使用的算法,一般都选择 rsa -C 为备注,一般以邮箱作为备注,提示保存文件时以 id_rsa_work 保存,用于区分第一个密钥id_rsa。
至此,我的 ~/.ssh 文件夹内共有4个文件。
├── id_rsa
├── id_rsa_work
├── id_rsa_work.pub
├── id_rsa.pub
└── known_hosts
其中以 .pub 结尾的为公钥文件,用于填写在GitHub网站,同名不带 .pub 后缀的为私钥文件,自己保存不要泄漏,known_hosts 文件为已知 host 缓存,目的是加快 ssh 访问速度。
为 GitHub 添加 ssh key
登录 GitHub 在账户
Settings > SSH and GPG keys > New SSH key > Add key 将之前生成的 ssh key 的 pub 文件中的内容粘贴进去,另一个账户也如法炮制。
为本机添加 ssh key
ssh-add ~/.ssh/id_rsa
ssh-add ~/.ssh/id_rsa_work
如果成功会看到 Identity added 的反馈。
关于ssh有一个奇怪的三角恋。 在这段特殊的浪漫故事中有三个角色:
ssh-agent命令
让我们看看这些是如何一起玩的。
这意味着:当 ssh 向 ssh-agent 询问身份时,ssh 可能会收到多个身份,并且会尝试使用所有身份。
那么你怎么知道代理有哪些身份呢? 奇怪的是,列出所有身份的命令是
ssh-add -L。
运行这个命令,可以看到我们所有的密钥,确认我们刚刚新增的密钥已经在ssh-agent管理的身份列表中。
现在我们知道 ssh-agent 将提供多个密钥。
ssh 如何使用这些密钥/身份? 这一次,让我们看一下
man ssh_config
除非设置了 IdentitiesOnly,否则身份验证代理表示的任何身份都将用于身份验证。
这实际上是说,ssh 会贪婪地尝试它提供的每个身份,除非你有使用 IdentitiesOnly 设置,比如:
ssh -o 'IdentitiesOnly yes' -i keypair.pem ec2-user@some-amazon-host
生成配置文件用于根据情况选择不同的 ssh key。
touch ~/.ssh/config
vi config
写入内容
#Default GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
#Work GitHub
Host github.com-work
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_work
两个配置不同的地方在于 Host 和 IdentityFile,第二处 Host 填写的 github.com-work 是为了区分默认配置。
git config --global --unset credential.helper
git config --system --unset credential.helper
git config --local --unset credential.helper
使用以下命令测试SSH连接。
ssh -T -v github.com-work
确认得到如下响应:
Hi Your-name! You've successfully authenticated, but GitHub does not provide shell access.
对于本地已存在的仓库,查看remote。
git remote -v
添加/更改remote,不能使用HTTPS形式的remote,必须使用如下SSH形式。
git remote add origin git@github.com-work:username/reponame.git
如果已经存在remote,使用set-url
更改origin
git remote set-url origin git@github.com-work:username/reponame.git
git 就会依据 Hostname 选择需要的账户进行 push 和 pull 了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。