1.SSH服务
1.SSH基础
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。
ssh客户端<————网络—————>ssh服务端
2.优点
数据传输是加密的,可以防止信息泄漏
数据传输是压缩的,可以提高传输速度
3.ssh配置
open ssh
服务名称:sshd
服务端主程序:/usr/sbin/sshd
服务端配置文件:/etc/ssh/sshd_config
4.ssh原理
公钥传输原理
客户端首次发起连接,服务端会生成一个随机会话id,会将服务端的公钥以及会话id发送给客户端
客户端收到会话id以及服务端的公钥,会给客户端自己的公钥以及会话id做运算,产生一个结果,然后再用服务端的公钥加密,再将这个加密结果传给服务端
服务端收到加密结果后,会用自己的私钥解密得到客户端的公钥和会话id运算的结果
因为已知会话id,所以就可以得到客户端的公钥,最后双方都持有对面的公钥
2.ssh登录
1.登录方法
1.登录方法一
ssh [远程主机用户名]@[远程服务器主机名或IP地址] -p port
当在 Linux 主机上远程连接另一台 Linux 主机时,如当前所登录的用户是 root 的话,当连接另一台主机时也是用 root 用户登录时,可以直接使用 ssh IP,端口默认即可,如果端口不是默认的情况下,需要使用-p 指定端口。
首次登录会询问,并要求输入密码
修改客户端配置文件 无需验证,有安全隐患
2.登录方法二
ssh -l [远程主机用户名] [远程服务器主机名或IP 地址] -p port
-l :-l 选项,指定登录名称。
-p: -p 选项,指定登录端口(当服务端的端口非默认时,需要使用-p 指定端口进行登录)
模拟防火墙
方便跳板连接
3.常用配置项
vim /etc/ssh/sshd_config
4.修改默认端口
vim /etc/ssh/sshd_config
行修改自己默认的端口
5.禁止root用户登录
vim /etc/ssh/sshd_config
开启38 行 并改为 no,默认注释并写的yes
38 PermitRootLogin no
注意虽然阻止了root 但是普通用户可以使用su
ssh zf@192.168.17.133
zf@192.168.17.133's password: 密码
用其他主机远程登录本机
root登录不上
6.白名单黑名单列表
vim /etc/ssh/sshd_config
手动添加
AllowUsers zf@192.168.17.130 lisi允许所有有的主机访问我的lisi用户
只允许 zhangsan 从192.168.91.101上访问
zf:
其他用户:
7.ssh服务的最佳实践
1.建议使用非默认端口 22
2.禁止使用protocol version 1
3.限制可登录用户 白名单
4.设定空闲会话超时时长
5.利用防火墙设置ssh访问策略
6.仅监听特定的IP地址 公网 内网
7.基于口令认证时,使用强密码策略
8.使用基于密钥的认证
9.禁止使用空密码
10.禁止root用户直接登录
11.限制ssh的访问频度和并发在线数
12.经常分析日志 分离
13.禁用反向dns
8.使用秘钥对及免交互验证登录
原理: 用户/密码
基于秘钥
用户/密码:
1.生成公钥和私钥
2.将公钥导给对面
原理:
-
客户端发起ssh请求,服务器会把自己的公钥发送给用户
-
用户会根据服务器发来的公钥对密码进行加密
-
加密后的信息回传给服务器,服务器用自己的私钥解密,如果密码正确,则用户登录成功
基于密钥的登录方式
首先在客户端生成一对密钥(ssh-keygen)
并将客户端的公钥ssh-copy-id 拷贝到服务端
当客户端再次发送一个连接请求,包括ip、用户名
服务端得到客户端的请求后,会到authorized_keys()中查找,如果有响应的IP和用户,就会随机生成一个字符串,例如:kgc
服务端将使用客户端拷贝过来的公钥进行加密,然后发送给客户端
得到服务端发来的消息后,客户端会使用私钥进行解密,然后将解密后的字符串发送给服务端
服务端接受到客户端发来的字符串后,跟之前的字符串进行对比,如果一致,就允许免密码登录
实操
主机一
ssh-keygen -t ecdsa
生成密钥文件
回车跳过
cd .ssh/到所在目录
ssh-copy-id -i id_ecdsa.pub 192.168.17.133
将公钥文件导入对方用户的 注意路径
ssh-copy-id -i id_ecdsa.pub 192.168.17.60
两台机子都要导入
免交互密码登录
ssh 192.168.17.133
记得登录一个要exit退出来
ssh 192.168.17.60
主机一配置成功
主机二
ssh-keygen -t ecdsa
生成密钥文件
回车跳过
cd .ssh/到所在目录
ssh-copy-id -i id_ecdsa.pub 192.168.17.130
将公钥文件导入对方用户的 注意路径
ssh-copy-id -i id_ecdsa.pub 192.168.17.60
两台机子都要导入
免交互密码登录
ssh 192.168.17.130
记得登录一个要exit退出来
ssh 192.168.17.60
主机二配置成功
主机三
ssh-keygen -t ecdsa
生成密钥文件
回车跳过
cd .ssh/到所在目录
ssh-copy-id -i id_ecdsa.pub 192.168.17.130
将公钥文件导入对方用户的 注意路径
ssh-copy-id -i id_ecdsa.pub 192.168.17.133
两台机子都要导入
免交互密码登录
ssh 192.168.17.130
记得登录一个要exit退出来
ssh 192.168.17.133
主机三配置成功
三台主机使用秘钥对及免交互验证登录成功