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