1.什么是SSH
SSH是Secure Shell的缩写,是一个建立在应用层上的安全远程管理协议。为远程登录会话和其他网络服务提供安全性。默认22端口。
2.SSH的登录验证模式
一篇博客图解SSH原理,
b站视频尚硅谷2019年Linux运维+云计算②:Linux网络服务管理和MySQL+Redis数据库管理
关于这个有很多,需要反复看
3.配置SSH服务
3.1环境准备
两台Linux操作系统的主机(CentOS6.x),可以正常通信,主机名不同。
修改主机名方式:hostname node1,hostname node2,hostname node3
临时关闭防护功能:
iptables -F #清空防火墙规则
setenforce 0 #临时关闭SELinux
永久关闭防护功能:
chkconfig iptables off #设置防火墙开机不自启动
sed -i ‘7s/enforcing/disabled/’ /etc/selinux/config #永久关闭SELinux
注意:以上两条命令执行之后需要重启服务器
vim /etc/selinux/config出现下图:
先来看一下防火墙规则加载时候的状态:
iptables -L
临时把规则清空:
iptables -F
再iptables -L
查看SELinux的状态命令:getenforce
临时关闭:setenforce 0
永久关闭:服务每次开机都不自启,iptables开机 不自启
首先看一下iptables服务:chkconfig --list iptables
现在2345级别开机自启
关闭命令:chkconfig iptables off
打开vim /etc/selinux/config
将上图改为下图:
改完之后验证:
3.2用户密码验证
Linux 利用远程工具登录使用ssh格式:
ssh root@192.168.100.1
Linux与Linux互通使用ssh格式:
退出命令:exit
3.3密钥对验证
3.3.1Linux主机之间的密钥对登录验证
- 客户端生成密钥对文件
ssh-keygen -t rsa -b 2048
-t 指定加密类型(rsa/dsa等)
-b 指定密钥对加密长度
询问1:执行过程中会询问保存位置,一般默认保存在当前用户家目录下的.ssh/目录
询问2:是否对密钥文件进行加密
加密:若加密,则在调用密钥文件时需要先验证密钥的密码,密码正确才能使用密钥文件
不加密:若不加密,则密钥文件可以直接被调用,整个登录验证过程无需输入任何密码,即为免密登录 - 将公钥文件上传至服务器端
ssh-copy-id 用户名@服务器IP地址
#该用户名和要用来登录服务器的用户名一致 - 客户端尝试登录服务器
ssh 用户名@服务器IP地址
#密钥对验证优先级大于账户密码验证
询问过程直接回车
不需要密码
3.3.2Windows与Linux之间的密钥对登录验证
3.4禁止密码登录
当我们学会了使用密钥对进行验证后,建议生产环境下将账户密码登录功能关掉
配置文件:/etc/ssh/sshd_config
选项:PasswordAuthentication no
注意:ssh的配置文件中,并不是注释掉的就是不生效的,有些是默认生效,需要修改时一定要取消注释再修改
vim sshd_config进入:
重启sshd配置文件
3.5禁止SSHroot用户登录
你得用一个别的用户user1,再操作
3.6修改默认端口、限制 ssh 监听 IP
一般都会修改端口,尽量修改一个高位端口(范围1-65535)
用xshell时输入下面命令:
Linux连接Linux使用命令:ssh -p 端口号 root@IP
限制IP登录:
想要虚拟机有多个IP地址,通过命令:ifconfig eth0:0 192.168.88.22