ssh-key生成密钥及SSH无密码登录
介绍
首先什么是SSH
SSH的好处
怎么实现SSH的好处呢?
SSH-Key是什么?
SSH-Key的密钥类型
SSH-Key生成
是否已存在SSH-Key
ls -al ~/.ssh # 用户目录.ssh文件,是否有id_rsa/id_rsa.pub
id_rsa
(私钥,要保存好,放在本地,私钥可以生产公钥,反之不行。)
id_rsa.pub
(公钥,可以用于发送到其他服务器,或者git上。)
新生成SSH-key
ssh-keygen -t rsa -C "leeze0216@163.com"
-b:指定密钥长度;
-e:读取openssh的私钥或者公钥文件;
-C:添加注释;
-f:指定用来保存密钥的文件名;
-i:读取未加密的ssh-v2兼容的私钥/公钥文件,然后在标准输出设备上显示openssh兼容的私钥/公钥;
-l:显示公钥文件的指纹数据;
-N:提供一个新密语;
-P:提供(旧)密语;
-q:静默模式;
-t:指定要创建的密钥类型(如:rsa,dsa)。
键入命令后,会让你输入密码用来保护你的密钥等,总共三次需要输入的,你都直接三次回车就好!!
【关键是,设置了你自己以后忘了就得重新生成】
【-C 是给你的密钥设置注释,你不想设置为邮箱,设置成别的也行】
生成后,当前用户的目录
下,生成一个.ssh
隐藏目录,目录中会有【id_rsa
】和【id_rsa.pub
】两个文件,一个是私钥
,一个是公钥
。你现在就可以复制使用了。
上传公钥到服务器
- 上传方式
- 重启SSH服务
- 测试免密登录服务器
- 设置ssh无密码访问git仓库
方式一:
这里测试用的服务器地址为:10.211.55.61
,用户为:root
ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.211.55.61
如果之前登录过,可能会报错,需清理
known_hosts
对应IP
的值vi ~/.ssh/known_hosts # 删除对应ip的相关rsa信息
或者
ssh-keygen -R 192.168.1.10 # 清除旧的公钥信息
删除
know_host.old
方式二:
将之前在本地生成的公钥id_rsa.pub
,发送到需要无密码登录的服务器
,然后将id_rsa.pub的内容追加到服务器的~/.ssh/authorized_keys
文件中即可。
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ service sshd restart
ssh root@10.211.55.61
ssh -o StrictHostKeyChecking=no 192.168.xxx.xxx
测试ssh无密码访问git仓库:ssh -T git@gitee.com
Git配置多个SSH-Key
- 生成 gitee SSH-Key
- 生成 github SSH-Key
- 添加配置文件,在 ~/.ssh 目录下新建一个 config 文件
- 测试
$ ssh-keygen -t rsa -C 'git@gitee.com' -f ~/.ssh/gitee_id_rsa
$ ssh-keygen -t rsa -C 'git@github.com' -f ~/.ssh/github_id_rsa
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
# 配置文件参数
Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件(可以直接填写ip地址)
HostName : 要登录主机的主机名(建议与Host一致)
User : 登录名(如gitlab的username)
IdentityFile : 指明上面User对应的identityFile路径
Port: 端口号(如果不是默认22号端口则需要指定)
$ ssh -T git@gitee.com
$ ssh -T git@github.com