购物网站开发代码,devexpress网站开发,中信建设有限责任公司 联系方式,wordpress 关闭新闻确认本机是否已有ssh key
首先确认自己系统内有没有 ssh key。 bash复制代码cd ~/.ssh
ls *.pub # 列出所有公钥文件id_rsa.pub若有#xff0c;确认使用当前 key 或者生成新 key#xff0c;若没有#xff0c;生成新 key。由于我需要登录两个帐号#xff0c;所以在已经存在…确认本机是否已有ssh key
首先确认自己系统内有没有 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 访问速度。
添加 ssh key
为 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 key
关于ssh有一个奇怪的三角恋。 在这段特殊的浪漫故事中有三个角色
ssh-agent命令
保存身份验证密钥身份并与 ssh 共享的程序 ssh命令键入 ssh 时使用的远程登录客户端 ~/.ssh/config文件 - 可用于向 ssh 客户端提供选项的配置文件
让我们看看这些是如何一起玩的。
第一站ssh-agent。 这为您保存着您的钥匙。 在 ssh-agent (man ssh-agent) 的使用说明中多个身份可以同时存储在 ssh-agent 中如果存在ssh 将自动使用它们。
这意味着当 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-usersome-amazon-host
生成配置文件
生成配置文件用于根据情况选择不同的 ssh key。
touch ~/.ssh/config
vi config写入内容
#Default GitHub
Host github.comHostName github.comUser gitIdentityFile ~/.ssh/id_rsa#Work GitHub
Host github.com-workHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_work两个配置不同的地方在于 Host 和 IdentityFile第二处 Host 填写的 github.com-work 是为了区分默认配置。
清除credential.helper设置 git config --global --unset credential.helpergit config --system --unset credential.helpergit config --local --unset credential.helper测试SSH连接
使用以下命令测试SSH连接。 ssh -T -v github.com-work
确认得到如下响应
Hi Your-name! Youve successfully authenticated, but GitHub does not provide shell access.
配置本地仓库
对于本地已存在的仓库查看remote。 git remote -v
添加/更改remote不能使用HTTPS形式的remote必须使用如下SSH形式。 git remote add origin gitgithub.com-work:username/reponame.git
如果已经存在remote使用set-url 更改origin git remote set-url origin gitgithub.com-work:username/reponame.git
git 就会依据 Hostname 选择需要的账户进行 push 和 pull 了。