什么是SSH?
SSH是专门为了远程登录会话和其他网络服务提供的安全性协议,使用SSH协议可以有效的防止远程连接会话的时候出现信息泄密,在数据传输的时候SSH会先对联机的数据包通过加密技术进行加密处理,加密后在进行数据的传输,确保了传输中的安全性,SSH服务主要提供两个服务功能:一个是远程联机的SSH服务,一个是借助SSH协议来传输数据的SFTP服务。
SSH原理阐述
① 服务端开启ssh服务监听22端口
② 客户端发送联机请求(携带IP和端口)
③ 客户端服务端进行联机加密认证
④ 认证通过联机成功
SSH的两种认证方式
① 基于密码口令的认证
② 基于密钥的安全认证
基于密码口令的认证
- 客户端发起ssh请求
- 服务端发送公钥给客户端
- 客户端输入用户名和密码,SSH通过公钥加密传给服务器
- 服务器通过私钥解密用户名密码,对比成功,允许登录
基于密钥的安全认证
准备阶段
- 生成密钥对(公钥和私钥)
- 将生成的公钥拷贝到需要访问的服务端2上
访问阶段
- 服务器1携带用户名、IP,发送链接请求
- 服务器2获取到请求后到authorized_keys中查找,如有相应的用户名和IP,则生成一个字符串
- 使用从服务器1拷贝过来的公钥对随机产生的字符串加密,发送给服务器1
- 使用私钥进行解密
- 将解密后的字符串发送给服务器2
- 服务器2接受到解密后的字符串与先前生成的字符串作对比,相同则允许免密登录
基于密钥验证配置
服务器1生成秘钥对
ssh-keygen -t rsa
将生成的公钥(id_rsa.pub)发送给服务器2(authorized_keys)
ssh-copy-id 服务器2的hostname或ip
基于密钥验证配置是单向的,通过以上配置,服务器1访问服务器2不需要密码验证,但服务器2访问服务器1还是需要密码验证