配置
这里拿GitHub
和GitLab
来举例
首先生成两种不同的SSH Key
.ssh
├── config
├── id_rsa # GitHub
├── id_rsa.pub # GitHub
├── id_rsa_com # GitLab
├── id_rsa_com.pub # GitLab
└── known_hosts
然后需要一个config
文件来进行配置
# config文件内容
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host gitlab # 别名,以后连接远程服务器就可以用命令 ssh gitlab
HostName 192.168.19.224 # 主机名
Port 22 # 端口
User git # 用户名
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_com # 密钥文件的路径
其中HostName
和Host
可以不一致,使用时是用的Host
,个人会写成一致的。
注意
这里纠正一下,本来我是写成一样的,但是现在这个ssh
我有两个用途,一个是git ssh
,一个是ssh
远程登录,如果写成一样的会导致远程登录的时候也会访问这个SSH key
,如果服务器没有这个key
的话,就会如下:
root@192.168.19.224: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
这个时候该怎么解决呢,有两种方法,
1.HostName
和Host
写成不同的,不过相应的,比如clone
的时候地址也要改变如
# 原来是 git clone git@192.168.19.224:root/test.git
git clone git@gitlab:root/test.git
2.在服务器上增加这个key
~/.ssh/authorized_keys #在服务器上这个文件里增加你的SSH key
验证
ssh -T git@github.com # ssh -T 用户名@配置文件中的Host