问题:
多个git账号,用SSH方式连接,配置SSH的时候,会存在覆盖问题。
解决:
1.生成rsa
(1)$ ls ~/.ssh
查看本地是否有rsa,若有且没用,可以删除($ rm -rf ~/.ssh)
(2)$ ssh-keygen -t rsa -C your_git_mail -f ~/.ssh/id_rsa_github -b 4096
注:
[1]-C 后填写你git的邮箱 -f后填写rsa的路径 -b后填写rsa的长度(1024 2048 4096)
[2]多个git邮箱要生成多个rsa
[3]rsa会生成两个文件:私钥,公钥(有后缀.pub)
2.添加私钥
(1)$ ssh-add -l
查看ssh-agent中的私钥,若有且无用,则可以删除($ ssh-add -D)
(2)$ ssh-add ~/.ssh/id_rsa_github
将生成的rsa私钥添加到ssh-agent中
3.远程添加公钥
(1)$ cat ~/.ssh/id_rsa_github.pub
查看公钥,然后将公钥拷贝。(也可以通过终端的拷贝命令$ pbcopy < ~/.ssh/id_rsa_github.pub)
(2)打开git账号,然后添加公钥。
路径:Settings-->SSH and GPG keys-->New SSH key(有些gitlab的路径不一定一致)
4.config配置
(1)$ vim ~/.ssh/config
配置config
(2)config的设置内容
#github
Host github.com//git的域名
Identityfile ~/.ssh/id_rsa_github//对应私钥文件的路径
IdentitiesOnly yes//防止提供不相关的密钥
User xxx//git的userName
[1]多个git需要多个配置
5.测试
$ ssh -T git@github.com
若成功,返回Welcome to xx, 'your username'
$ ssh -vT git@github.com (会返回debug的log)
坑:
Too many authentication failures for git。(git认证失败太多。)
ssh-agent中的rsa有问题
[1]查看rsa $ ssh-add -l
[2]config配置 IdentitiesOnly yes
[3]建议清除ssh-agent中的rsa,然后重新配置。
拓展:
~/.ssh下有个known_hosts的文件。这个文件是记录每个你访问git的公钥。当下次访问git时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。
如果多系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告。
有以下两个解决方案:
1. 手动删除修改known_hsots里面的内容 (需要每次手动删除文件内容,比较麻烦,但是安全性高)
2. 修改配置文件“~/.ssh/config”,加上这两行。 (SSH连接时会忽略known_hsots的访问,安全性降低)
StrictHostKeyChecking no
UserKnownHostsFile /dev/null