网络服务之SSH协议
网络服务之SSH协议
一.SSH基础
1.1 什么是ssh
SSH(Secure Shell)协议是一种用于字符界面 远程登录 和 数据加密 传输的协议。
1.2 ssh优点
优点:
- 数据传输是 加密 的,可以 防止信息泄漏
- 数据传输是 压缩 的,可以提高 传输速度
注意:telnet对比ssh 1.没有压缩功能 2.明文传输数据不安全
1.3 ssh原理
1.公钥传输原理
- 1.客户端发起链接请求
- 2.服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)
- 3.客户端生成密钥对
- 4.客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密
- 5.客户端发送加密值到服务端,服务端用私钥解密,得到Res
- 6.服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)
- 7.最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密
2.ssh加密传输原理
1.对称加密:采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密
2.非对称加密:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
非对称加密原理(重点!!) :首先ssh通过加密算法在客户端产生密钥对(公钥和私钥),公钥发送给服务器端,自己保留私钥,如果要想连接到带有公钥的SSH服务器,客户端SSH软件就会向SSH服务器发出请求,请求用联机的用户密钥进行安全验证。SSH服务器收到请求之后,会先在该SSH服务器上连接的用户的家目录下
1.4 ssh验证方式
密码认证 :通过 用户名 和 密码登录
密钥认证 :使用密钥( 公钥和私钥 )进行 无密码登录
1.5 ssh工作方式
1.6 ssh登录方式
第一种方法:ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port:端口
第二种方法:ssh -l [远程主机用户名] [远程服务器主机名或IP地址] -p port:端口
注意: -p :当服务端的端口非默认时,需要使用-p 指定端口号进行登录
注意:
-t
选项的作用就是强制 SSH 分配一个伪终端给远程会话,适用于跳板机连接。
二.SSH客户端和服务端
2.1 常用文件
OpenSSH是以 SSH协议开发的软件,提供sshd服务
常用配置文件有两个/etc/ssh/ssh_config 和/etc/sshd_config。
ssh_config:为客户端配置文件,设置与客户端相关的应用可通过此文件实现
sshd_config:为服务器端配置文件,设置与服务端相关的应用可通过此文件实现
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
客户端配置文件:/etc/ssh/ssh_config
注意:ssh服务端主要包括两个服务功能 ssh远程连接 和 sftp服务 (文件传输功能)
2.2 服务端常见配置项
·1.修改默认端口
2.禁止root用户登录
将其中修改为yes: **PermitRootLogin yes
#默认 ubuntu不允许root远程ssh登录、每次需要从普通用户切换到root用户**
3.设定用户登录失败,服务器切断连接前等待的时间,单位为秒
LoginGraceTime 2m
4.限定同一连接打开的窗口数
MaxSessions 10
#同一个连接最大会话
提高ssh速度(重点!!)
注意:无论内网还是外网都要改为no ,禁用反向解析
6.白名单黑名单列表
白名单:默认拒绝所有,只有加进来,才可以
黑名单:默认允许所有,加进来才不可以
2.3ssh 服务的最佳实践
- 建议使用非默认端口 22
- 禁止使用protocol version 1
- 限制可登录用户 白名单黑名单
- 设定空闲会话超时时长
- 利用防火墙设置ssh访问策略
- 仅监听特定的IP地址 公网 内网
- 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
- 使用基于密钥的认证
- 禁止使用空密码
- 禁止root用户直接登录
- 限制ssh的访问频度和并发在线数
- 经常分析日志 分离
三.基础操作
1.免确认交互问题(客户端)
解决客户端免确认交互直接输入密码登录问题
2.远程免密登录
1.在客户机生成密钥对: ssh-keygen
2.在客户机存放公钥的文件夹中发送自己的公钥给服务器 : ssh-copy-id -i id_ecdsa.pub IP地址
3.结果
注意:此结果是服务器31生成密钥对后将公钥发送给客户机11后的结果,其过程省略
3.模拟服务器新旧更换(重点!)
实验准备:一台客户端、一台旧服务器(ip不变)、一台新服务器 (ip不变)
实验目的:模拟在生产环境中如果旧的服务器设备更换新的服务器,ip还是原先旧的ip的情况下,产生的安全问题,导致远程连接不上服务器。
1.将旧服务器关机模拟
2.在新服务器上添加旧服务器ip测试
- 在客户机测试远程连接服务器
注意: 为什么会出现这种问题,因为密钥不匹配 ;解决方法:找到存放曾经连过主机公钥的文件,删除曾经连过此服务器对应的公钥就可以解决。
4.删除存放曾经连过服务器公钥文件中此服务器 :
5.测试远程连接
注意:在生产环境中硬盘更换、网卡更换、内存更换等设备更换都会导致远程登录不上。
4.如何确认登录服务器正确
1.客户端连接
2.服务端自己连接自己
3.总结
由1、2两张图可以看到公钥是一样的,由此可以判断对方就是要连的服务器;在能知道对面服务器密码的情况下,此方法是可行