SSH设置无密码连接

一、什么是SSH协议

SSH 为 Secure Shell 的缩写,即“安全外壳”,由 IETF 的网络小组(Network Working Group)所制定,是基于公钥的安全应用协议,专为远程登录会话和其他网络服务提供安全性。
其建立在应用层基础之上,由 SSH 传输层协议、SSH 用户认证协议以及 SSH 连接协议三个子协议组成,各个子协议分工合作,实现加密、认证、完整性检查等多种安全服务。
其研究目的是以一种渐进的方式增强网络安全,通过现代密码技术,增强网络中非安全的服务,如 FTP、Rlogin、Telnet等,实现服务器认证、用户认证及安全加密网络连接服务。
SSH协议主要有两个版本 SSH1 和 SSH2,SSH1因存在漏洞已停用,目前主要用的是SSH2版本。

二、使用 SSH 远程登录服务器

SSH 是一种协议,也是终端工具中的一个命令。
通过 ssh 命令,就能连接并登录到远程服务器上。最基础的如下:

ssh <用户名>@<服务器 IP>
# eg: ssh [email protected] 

按照提示输入密码之后就能远程操作主机了

三、SSH免密登录

由于上面这样每次都需要输入密码比较麻烦,尤其是密码较长的时候,所以我们采用免密登录。

一、基本原理

SSH 协议采用非对称加密,使用一对秘钥进行通信。我们将自己机器的私钥存放在本地,然后将公钥交给服务器,这样我们本地的机器和服务器之间就可以直接使用这个公钥进行通信了(其实并不是纯依赖公钥通信),从而避免了每次都要输入密码的情况。
大概的流程如下:
⭐1.客户端生成一对SSH密钥,分为公钥和私钥
⭐2.客户端将自己的公钥发送给服务器,发送到服务器的 /root/.ssh/authorized_key 文件中
⭐3.服务器端生成一个随机数 R,再使用客户端的公钥对 R 进行加密,记作Pub®
⭐4.随后服务器将 Pub® 发送给客户端
⭐5.客户端拿到 Pub® 之后,就可以使用自己的私钥进行解密,得到随机数 R,再加上当前和服务器会话的sessionKey,加密之后得到一个摘要1,发送给服务器
⭐6.服务器此刻有R,也有 sessionKey,经过同样的摘要算法计算,也得到一个摘要2,二者一对比,发现一样,于是通过了校验,就允许客户端登录服务器了。
SSH设置无密码连接_第1张图片

免密登录实现

1. 首先再自己电脑上打开cmd窗口,然后输入以下指令

ssh-keygen -t rsa #-t表示类型选项,这里采用rsa加密算法

首先会询问你要把生成的秘钥放到哪个路径,直接回车,保持默认即可.
接着,会有两步骤询问是否输入 passphrase,它是私钥的密码,如果设置了之后,之后在和服务器通信时,虽然不再需要输入用户口令,但要输入该私钥,不用输入任何内容,回车跳过即可
最后就生成了一对秘钥,私钥名为 id_rsa,公钥名为 id_rsa.pub

2. 将公钥上传到服务器
Linux 系统有关 SSH 协议的内容都放在了 /root/.ssh/ 目录下面
我们只需要将刚刚生成的公钥文件的内容复制到服务主机的 /root/.ssh/authorized_key 文件中即可,可以直接复制粘贴,但这里我推荐使用 ssh-copy-id 命令
小提示:Windows 系统需要使用 git bash ,CMD 和 Powershell 没有这个命令:

# 命令格式如下
ssh-copy-id <用户名>@<服务器 IP>
# eg:ssh-copy-id [email protected]

出现类似下面内容就说明成功了
SSH设置无密码连接_第2张图片
现在打开终端就可以直接登录不需要输入密码了,快去试试吧~~

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