一、ssh简介
1.SSH用于计算机之间的加密登录,是一类网络协议,使用SSH协议远程登录另一台计算机,这种登录是相对安全的,即使被中途截获,密码不会泄露。
2.工作流程
(1)建立连接:SSH服务器在指定的端口监听客户端的连接请求,在客户端向服务器发起连接请求后,建立一个TCP连接。
(2)协商版本:某些版本可以支持更多的认证方法和密钥交换方法,SSH服务器和客户端通过协商确定最终使用的SSH版本号。
(3)算法协商:双方根据各自支持的算法,协商出最终用于产生会话密钥的密钥交换算法,用于数据信息加密的加密算法、用于进行数字签名和认证的公钥算法。
(4)交换密钥:服务器和客户端通过密钥交换算法,动态生成共享的会话密钥和绘画ID,建立加密通道。会话密钥主要用于后续数据传输的加密,会话ID用于在认证过程中标识该SSH连接。
(5)用户认证:密码(password)认证、密钥(publickey)认证、password-publickey认证(同时满足)、all认证(选择其一)
(6)会话请求和交互:认证通过后,SSH客户端向服务器端发送会话请求,请求服务器提供服务,建立好会话后,SSH服务器端和客户端在该会话上进行数据信息交互。
3.SSH协议主要实现三个功能:
「用户」和「服务器」的合法性验证。确保数据发送到正确的客户机和服务器上。加密数据。保证数据的安全和私密。保护数据的完整性。利用Hash函数验证信息完整性。SSH 原理
SSH之所以能安全通信,是结合了 公钥 和 私钥 两个加密方法。先介绍一下这俩种加密方法。
二、具体配置
1.准备两台Linux虚拟机,一台作为服务端,一台作为用户端使用Xshell远程连接工工具生成公钥文件
2.关闭服务端防火墙
systemctl stop firewalld
3.修改ssh服务的端口号:Port 22(监听端口,默认监听22端口 【默认可修改】)
使用 vim /etc/ssh/sshd_config 进入修改页面
将p一下两个内容的 # 号删除,保存并退出
在配置完成后需要重启:systemctl restart sshd
4.
在客户端,使用“ssh-keygen -t rsa ”命令生成密钥文件
ssh-keygen -t rsa
在对其进行检测:
ll .ssh/
5.在客户端使用 “ssh-copy-id -i root@服务端IP”将密钥文件拷贝给服务端,并输入一次服务器端密码
ssh-copy-id -i root@服务端IP
这时我们可以直接在客户端使用“ll .ssh/”查看密钥是否送达
6.测试是否能够免密登录,“ssh 用户名@目标IP”
ssh root@服务端IP
出现以上内容则表示成功登入服务端