linux主机的免密登录

实现linux主机之间的相互免密登录

在进行远程登录的时,服务器和主机间进行认证阶段分为:

  • 基于口令认证(不安全,易被抓包拦截获取)
    • 客户机连接服务器时,服务器将自己的公钥返回给客户机
    • 客户机会将服务器的加密的公钥追加到/root/.ssh/known_hosts文件中
    • 客户机输入账号密码登录
      • 当第二次去连接时,客户机会先检查/root/.ssh/known_hosts文件查找服务器记录,若有则直接输入账号密码登录
  • 基于公钥认证(相对口令认证更为安全)
    • 客户机将自己的公钥添加在服务器的/root/.ssh/authorized_keys
    • 客户机连接服务器时,会在/root/.ssh/authorized_keys中匹配到客户机公钥pubKey,并生成随机数R,用客户机的公钥对该R进行加密,然后将加密信息发送给客户机
    • 客户机用自己的私钥解密得到随机数R,然后对随机数R和本次会话的SessionKey(会话密钥)利用MD5算法得到Digest1,发送给服务器端。
    • 服务器也对R和SessionKey(会话密钥)用同样的算法生成Digest2
    • 服务器端会最后比较Digest1和Digest2是否相同,完成认证过程

本次利用两台linux主机进行操作:root@server 和 root@server 

1、在server端对ssh的主配置文件进行配置

  • 将ssh服务端口号改为默认22
  • 基于口令和公钥认证都默认放行

vim  /etc/ssh/sshd_config     ----主配置文件

 21 #Port 22               # 端口22
 45 #PubkeyAuthentication yes       # 公钥认证放行
 65 #PasswordAuthentication yes     # 口令认证放行

2 、在node1端生成公私密钥对,并将公钥发送给server端

[root@node1 ~]# ssh-keygen  -t rsa                                # 生成密钥对,类型类rsa
[root@node1 ~]# ssh-copy-id 192.168.217.130              # 将公钥发送给server端(公钥追加到server端的/root/.ssh/authorized_keys文件中)

生成密钥对

linux主机的免密登录_第1张图片

检查生成的密钥对(路径:/root/.ssh)

发送公钥到server端

  • 第一次输入yes接收server短的公钥
  • 输入server端的密码进行认证

linux主机的免密登录_第2张图片

检查server端接收到的公钥

linux主机的免密登录_第3张图片

3、验证登录server端是否免密

[root@node1 ~]# ssh [email protected]

linux主机的免密登录_第4张图片

免密登录成功

实现互相免密登录,在server端进行上方同样操作即可

1、在server端生成公私密钥对,并发送给node1端

生成密钥对

linux主机的免密登录_第5张图片

检查生成的密钥对

linux主机的免密登录_第6张图片

server端发送公钥给node1端

linux主机的免密登录_第7张图片

2、检验server端登录node1是否免密

linux主机的免密登录_第8张图片

免密登录成功

你可能感兴趣的:(Linux,linux,服务器,网络)