当前位置:   article > 正文

【Linux安全】SSH免密登录_ssh 免密登录服务器

ssh 免密登录服务器

前言

通过SSH实验远程登陆有两种方式:口令登录和公钥登录。本文将从这两种登陆方式的原理展开来讲解如何实现SSH免密登录服务器。

一、SSH简介

● SSH(Secure Shell,安全外壳)是一种网络安全协议,为建立在应用层基础上的安全协议。SSH较为可靠,专为远程登录会话和其他网络服务提供安全性。利用SSH协议可以有效防止远程管理过程中的信息泄露问题,可以通过加密和认证机制实现安全的访问和文件传输等业务。
● SSH两种安全验证方式:基于口令的安全验证、基于密钥的安全验证
● SSH默认端口为22

二、SSH两种安全验证原理

1. 基于口令的安全验证

假设主机A需要远程连接服务器B,只要A知道B的帐号和密码,就可以登录到远程主机,并且所有传输的数据都会被加密。但是这种通过口令登陆的方式不能保证正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到“中间人”这种方式的攻击。

  • 基于口令的安全验证流程:
    在这里插入图片描述
  • 基于口令的安全验证存在的威胁
    https协议的公钥具有CA证书,难以被冒充,但是ssh协议的公钥并没有此类证明身份的证明,因此基于口令的安全验证方式存在被伪造公钥的风险。例如主机A在向服务器B发送请求时,如果此时该登录请求被主机C截获,主机C伪造一份公钥发送给主机A,主机A在不知情的情况下使用C给的公钥进行了密码的加密,再将加密后的密码发送给主机C,此时主机C就可以用自己的私钥将密码解密出来。

2. 基于密钥的安全验证

假设主机A需要远程连接服务器B,此时主机A需要为自己生成一对密钥(公钥+私钥),并把自己的公钥存放在服务器B上的~/.ssh/authorized_keys的文件里,当主机A向服务器B发送请求后,服务器B会在自己的~/.ssh/authorized_keys文件中查找是否有主机A的公钥,如果ssh_key文件中存放的主机A的公钥和主机A发送请求时的公钥一致,那么服务器B就会向主机A发送质询,主机A使用私钥对质询进行解密再发送给服务器B,B确认质询后同意建立会话。
基于密钥的安全验证不需要在网络上进行密码的传输并且私钥永远掌握在主机A手里,因此可以很好的抵抗中间人攻击。

  • 基密钥的安全验证流程:
    在这里插入图片描述

三、SSH免密登录

通过对SSH两种安全验证机制的了解,可以发现使用口令登录的方式需要输入密码,而使用公钥登陆的方式避免了输入密码这个步骤。因此SSH基于密钥的安全验证方式可以实现SSH远程免密登录。
实现SSH免密登录的步骤如下:

  1. 本地生成密钥对
  2. 将公钥放入服务器的~/.ssh/authorized_keys文件中
  3. 免密登录服务器

1. 本地生成密钥对

使用ssh-keygen生成一对密钥,生成的私钥将存放在用户目录下的.ssh/id_rsa中,公钥将存放在用户目录下的.ssh/id_rsa.pub
在这里插入图片描述

生成的两个密钥文件:
在这里插入图片描述

2. 将公钥放入服务器中

首先登录服务器,将刚刚在本机生成的公钥复制到服务器的~/.ssh/authorized_keys文件中
在这里插入图片描述

查看authorized_keys文件,可以看到公钥已经被写入。
在这里插入图片描述

~/.ssh/authorized_keys文件中可以存放多个主机的公钥,每个公钥后面会使用主机名来区分
在这里插入图片描述

3. 免密登录服务器

完成以上设置后在本机使用SSH可以免密登录服务器
在这里插入图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号