4.29 SSH

56 阅读3分钟

SSH远程连接协议

ssh服务

优点:

数据传输是加密的,可以防止信息泄漏

数据传输是压缩的,可以提高传输速度

服务器的相关信息

服务名称:sshd

服务端主程序:/usr/sbin/sshd

服务端配置文件:/etc/ssh/sshd_config

客户端的相关信息

客户端的主程序:/usr/bin/ssh

客户端配置文件:/etc/ssh/ssh_config

客户端存放公钥的位置:~/.ssh/know_host

屏幕截图 2024-04-29 145826.png

出现上面的这种情况就删掉 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 =客户端的 公钥

屏幕截图 2024-04-29 155316.png

密钥的存放位置

自己的密钥:/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行的端口号

image-20240429161751545.png

就需要在IP地址后输入命令加端口号切换登录

屏幕截图 2024-04-29 162127.png

禁止root用户登录

vim /etc/ssh/sshd_config

开启并把39行的yes改为no

image-20240429163354531.png

白名单黑名单列表

vim /etc/ssh/sshd_config

在最后一行加入

image-20240429164840559.png 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 三个回车

image-20240429171222963.png

ssh-copy-id -i 自己密钥文件 对方地址

image-20240429171522474.png

默认在自己的家目录~/.ssh/id_rsa

优化

建议使用非默认端口 22

禁止使用protocol version 1

限制可登录用户 白名单 黑名单

设定空闲会话超时时长

利用防火墙设置ssh访问策略

仅监听特定的IP地址 公网 内网

基于口令认证时,使用强密码策略,比如:tr-dc A-Za-z0-9 _< /dev/urandom |head -c 12|xargs

使用基于密钥的认证

禁止使用空密码

禁止root用户直接登录

限制ssh的访问频度和并发在线数

经常分析日志