SSH远程连接协议
ssh服务
优点:
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
服务器的相关信息
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
客户端的相关信息
客户端的主程序:/usr/bin/ssh
客户端配置文件:/etc/ssh/ssh_config
客户端存放公钥的位置:~/.ssh/know_host
出现上面的这种情况就删掉 rm -rf ~/.ssh/known_hosts 即可
以旧换新需要重新发送公钥
ssh登录
登录:ssh ip地址
连续登录:ssh -t ip地址 ssh -t ip地址
ssh 选项 ip地址 -p 端口
-p:指定端口
ssh第一次通信的原理
客户端首先发起连接 给服务器
服务器收到 请求将自己的 公钥以及 会话id 发给 客户端
客户端收到 服务器的公钥,以及会话id,会做一个运算
res= 会话ID+ 客户端的公钥
再用服务器的 公钥进行加密 传给 服务器
服务器收到后
先用服务端端自己私钥解密
已知会话ID
res - id =客户端的 公钥
密钥的存放位置
自己的密钥:/etc/ssh/
其他人:~/.ssh/know_host
ssh服务的最佳实践
1.建议使用非默认端口 22
2.禁止使用protocol version 1
3.限制可登录用户 白名单
4.设定空闲会话超时时长
5.利用防火墙设置ssh访问策略
6.仅监听特定的IP地址 公网 内网
7.基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs
8.使用基于密钥的认证
9.禁止使用空密码
10.禁止root用户直接登录
11.限制ssh的访问频度和并发在线数
12.经常分析日志 分离
修改默认端口
vim /etc/ssh/sshd_config
开启并修改17行的端口号
就需要在IP地址后输入命令加端口号切换登录
禁止root用户登录
vim /etc/ssh/sshd_config
开启并把39行的yes改为no
白名单黑名单列表
vim /etc/ssh/sshd_config
在最后一行加入
AllowUsers zhangsan@172.16.174.20 lisi
允许所有有的主机访问我的lisi用户,只允许 zhangsan 从172.16.174.20上访问
DenyUsers lisi@172.16.174.20
只拒绝 172.16.174.20 登录服务器的lisi用户
使用秘钥对及免交互验证登录
密码验证改成了密钥验证
客户端先生成公钥以及私钥对
把客户端自己的公钥发给对面
客户端
第一步 生成密钥
第二步 传密钥给对方
ssh-keygen 三个回车
ssh-copy-id -i 自己密钥文件 对方地址
默认在自己的家目录~/.ssh/id_rsa
优化
建议使用非默认端口 22
禁止使用protocol version 1
限制可登录用户 白名单 黑名单
设定空闲会话超时时长
利用防火墙设置ssh访问策略
仅监听特定的IP地址 公网 内网
基于口令认证时,使用强密码策略,比如:tr-dc A-Za-z0-9 _< /dev/urandom |head -c 12|xargs
使用基于密钥的认证
禁止使用空密码
禁止root用户直接登录
限制ssh的访问频度和并发在线数
经常分析日志