ssh服务也是日常工作中比较常用的一个服务,本次实验中,将介绍 一下ssh中常见的一些场景。
Linux——SSH服务篇与防火墙简单配置
- 1.开启SSH远程访问
- 2.禁止root用户直接SSH登陆
- 3.更改SSH端口(含防火墙简单配置)
- 4.设置多服务器之间相互SSH免密登陆
- 总结
1.开启SSH远程访问
一般使用服务器时,我们需要开启SSH远程访问,方便用户远程进行操作。
- 查看SSH是否安装 rpm -qa | grep ssh
- 上图说明Centos7默认安装了SSH包。
- 安装缺失的包、并配置SSH yum install openssh*
- 遇到选项按y就好了。
- 重启SSH服务,使之生效 systemctl restart sshd
2.禁止root用户直接SSH登陆
Linux最高权限用户root,默认可以直接登录sshd。为了提高服务器的安全度,需要对它进行禁止,使得攻击者无法通过暴力破解来获取root权限。
- 修改ssh配置文件 vim /etc/ssh/sshd_config
- 编辑好,先按ESC键,再输入 :wq 保存退出。
- 重启SSH服务,使之生效 systemctl restart sshd
3.更改SSH端口(含防火墙简单配置)
有时候为了安全起见,会做更改ssh端口的操作。新的端口需要在防火墙上放通。
- 修改ssh配置文件,添加新端口20000vim /etc/ssh/sshd_config
注意:端口号最大不能超过65535!
实际环境中,不建议直接修改22端口。在新端口能正常访问后,再关闭22端口。
- 在防火墙上放通20000端口 firewall-cmd --zone=public --add-port=20000/tcp --permanent
命令 | 含义 |
-zone | 作用域 |
–add-port=9200/tcp | 添加端口,格式为:端口/通讯协议 |
–permanent | 永久生效,没有此参数重启后失效 |
注意:添加端口后,必须用命令 firewall-cmd --reload 重新加载一遍才会生效!
拓展——防火墙简单配置
拓展——防火墙简单配置
防火墙的开启、关闭、禁用命令
(1)启动防火墙:systemctl start firewalld
(2)关闭防火墙:systemctl stop firewalld
(3)重新启动防火墙:systemctl restart firewalld
(4)检查防火墙状态:systemctl status firewalld
(5)设置开机启用防火墙:systemctl enable firewalld.service
(6)设置开机禁用防火墙:systemctl disable firewalld.service
(7)查看服务是否开机启动:systemctl is-enabled firewalld.service
(8)查看已启动的服务列表:systemctl list-unit-files | grep enabled
(9)查看启动失败的服务列表:systemctl --failed
使用firewall-cmd配置端口
(1)查看防火墙状态:**firewall-cmd --state**
(2)查看版本: firewall-cmd --version
(3)查看帮助: firewall-cmd --help
(4)更新防火墙规则/重新加载配置: **firewall-cmd --reload**
(5)查看开放的端口:**firewall-cmd --list-ports**
(6)查看所有打开的端口: firewall-cmd --zone=public --list-ports
(7)查看区域信息: firewall-cmd --get-active-zones
(8)查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
(9)拒绝所有包:firewall-cmd --panic-on
(10)取消拒绝状态: firewall-cmd --panic-off
(11)查看是否拒绝: firewall-cmd --query-panic
(12)开启防火墙端口:**firewall-cmd --zone=public --add-port=9200/tcp --permanent**(端口号为9200,通讯协议为tcp)
(13)关闭防火墙端口:**firewall-cmd --zone=public --remove-port=9200/tcp --permanent**
(14)查看端口:firewall-cmd --zone=public --query-port=80/tcp
- 查看20000端口是否已经开放iptables -nL --line-number
如下图,则表示已经开放。 - 检查Selinux是否关闭
Selinux默认为开启状态,不关闭Selinux的话,新端口无法连接成功。
SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。
永久关闭selinux vi /etc/selinux/config
将SELINUX=enforcing更改为SELINUX=disabled,保存退出。
设置后需要重启才能生效。查看selinux状态 vi /etc/selinux/config
补充:
查看selinux状态的命令:
- getenforce
- /usr/sbin/sestatus -v
- sestatus
临时关闭selinux的命令:setenforce 0
##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
永久关闭selinux的命令:vi /etc/selinux/config
将SELINUX=enforcing更改为SELINUX=disabled,保存退出,设置后需要重启才能生效。
- 重启SSH服务 systemctl restart sshd.service
重启ssh服务后,尝试用新端口连接是否能成功。
4.设置多服务器之间相互SSH免密登陆
在实际环境中往往是有多台服务器,为方便运维管理,我们常将实现同意功能的多台服务器之间设置免密登陆。例如:集群中的多个节点之间就会开启该功能。
现在我有三台Linux服务器:172.16.211.180-182
- 首先在一台服务器上生成密钥 ssh-keygen -t rsa
如下图即成功生成密钥,没有出现提示也不要紧,可以看下 /root/.ssh/ 路径下是否生成 id_rsa.(私钥) 和 id_rsa.pub(私钥) 两个文件。第一个回车处 可设置登陆密码,直接回车代表无需密码登陆
- 在/root/.ssh/目录下查看是否有密钥生成
- 将公钥添加到另外两台服务器里,就可以实现免密登陆了
ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.16.211.* #对应服务器的IP地址
至此,该服务器可以免密访问另外两台服务器!然后再另外两台服务器上重复该节操作即可。
总结
本次实验中,也解决了本人心中的一些小顾虑。
免密访问与操作机登陆的ssh端口无关;
本文参考文章:
1.Centos 7 安装、配置并启动SSH远程访问2.linux如何修改默认SSH端口3.Centos 7 查看防火墙状态4.CentOS 7.X 关闭SELinux5.多台Linux服务器之间互相免密登陆