为了CentOS的安全性,建议修改默认的SSH端口。
主要步骤简要说明如下:
1,检查是否存在/etc/selinux/config,如果存在禁用SELinux,将SELINUX=enforcing改为SELINUX=disabled。
2,如果不存在,修改/etc/ssh/sshd_config增加端口。
3,防火墙增加端口
4,重启ssh服务
5,重启防火墙
6,测试新端口
7,有问题调试 SELinux之类
8,没问题sshd_config删除原端口
9,防火墙去掉22端口
10,重启防火墙服务。
具体操作办法如下: 主要针对Centos7 和 firewall-cmd,iptables在下面会有提及。
1、运行如下代码,打开SSH的配置文件,如下:
nano /etc/ssh/sshd_config
没有nano的可以运行 yum install nano -y 安装,或者用vi。
假如要修改的端口为800,找到#Port 22一段,去掉前面的#,然后在下面加入一行Port 800,修改为如下:
Port 22
Port 800
然后保存退出(nano的保存退出的方法是CTRL+X,按Y,按回车,VI等编辑器的保存退出是esc,然后:wq)
之所以不直接删除22,是因为保存生效后当前终端可能端口。
要等完全测试没有问题以后再删掉22端口。
2、之后执行
/etc/init.d/sshd restart //centos 6执行
systemctl restart sshd.service //centos 7执行
这样SSH端口将同时工作与22和800上。
3、现在添加一条防火墙规则,加入800端口为开放端口,具体操作方式上,CentOS7和6稍微有一些差别。
不懂的可以去查看文章:centos7防火墙使用方法http://www.33f.net/network/centos7_firewall.html
对于centos7使用firewall规则的,执行如下命令:
firewall-cmd --zone=public --add-port=800/tcp --permanent #开启800端口
firewall-cmd --reload # **配置立即生效**
firewall-cmd --zone=public --list-ports //查看已开放端口
如果防火墙没开启状态,会提示FirewallD is not running则执行命令:
systemctl start firewalld.service
4、不要关闭当前窗口,新开窗口,测试新端口连接。
特殊情况处理
如果中途遇到编辑后依然无法连接新端口的情况,那么进入下面的环节:
向SELinux中添加修改的SSH端口
A、先安装SELinux的管理工具 semanage (如果已经安装了就直接到下一步) :
yum provides semanage
B、安装运行semanage所需依赖工具包 policycoreutils-python:
yum -y install policycoreutils-python
C、查询当前 ssh 服务端口:
semanage port -l | grep ssh //当前 ssh 服务端口
sestatus -v |grep SELinux //查看SELinux状态
D、向 SELinux 中添加 ssh 端口:
semanage port -a -t ssh_port_t -p tcp 800
如果想删除端口使用如下命令:
semanage port -d -t ssh_port_t -p tcp 8585
E、重启 ssh 服务:
systemctl restart sshd.service
这个时候一般新端口就可以连接了。 注意,这一步一定在关闭端口之前操作。
5、测试可以登陆后,到防火墙禁用掉22端口
firewall-cmd --zone=public --remove-port=22/tcp --permanent #关闭22端口
firewall-cmd --reload # 配置立即生效
firewall-cmd --zone=public --list-ports #查看开放的端口
**6、测试22是不是无法连接,确认没问题后,按照第一步的操作,再次编辑sshd_config文件,
将原来的22端口前面加上#或者直接删除,这样就把原来的22端口注释掉了。**
备注:之所以先设置成两个端口,测试成功后再关闭一个端口,是为了方式在修改conf的过程中,
万一出现掉线、断网、误操作等未知情况时候,还能通过另外一个端口连接上去调试。
以免发生连接不上还要联系机房调试,导致问题更加复杂麻烦。
想使用iptables,如何处理防火墙端口
1、对于centos6或centos7使用iptable规则的,执行如下命令:
vi /etc/sysconfig/iptables //不懂vi的也可以使用nano
2、打开后在最下方增加一条规则:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 800 -j ACCEPT
3、执行完毕后,运行如下命令保存和重启iptables,来让防火墙生效:
/sbin/service iptables save
systemctl restart iptables.service //**centos7 下执行**
4、注意:两种防火墙规则的使用全凭个人喜好。
5、备注:一些iptales命令扩展
1) 查看iptables防火墙规则命令如下:
nano /etc/sysconfig/iptables
2) 重启iptable防火墙规则命令,
/etc/init.d/iptables restart //centos6下执行
6、这下就完成了,试着用800端口连接ssh!如果不成,考虑下列问题
CentOS 的IPtables规则参考(详细):
http://wiki.centos.org/zh/HowTos/Network/IPTables
centos7防火墙使用方法http://www.33f.net/network/centos7_firewall.html
附上:常用ssh命令for centos7
查看状态:
systemctl status sshd.service
启动服务:
systemctl start sshd.service
重启服务:
systemctl restart sshd.service
开机自启:
systemctl enable sshd.service
linux下ssh登录限制ip的方法
vi /etc/hosts.allow
sshd:192.168.0.100:allow //允许IP 192.168.0.100 登录
sshd:192.168.0.:allow //允许IP 192.168.0. 网段登录
sshd:all:deny //禁止其他的所有IP登录
或者
sshd:223.227.223.*:allow //允许IP 223.227.223.* 网段登录
sshd:192.168.0.*:allow //允许IP 192.168.0.* 网段登录
sshd:all:deny //禁止其他的所有IP登录
fedora下 修改后保存后生效
freeBSD限制特定ip的ssh登陆:
#ee /etc/hosts.allow
在ALL : ALL : allow的前面加上
sshd : 192.168.0.100 : allow
sshd : 223.227.223.* : allow
sshd : ALL : deny
修改/etc/ssh/sshd_config加入
Allowusers admin@172.16.2.188
意思为
只允许admin从172.16.2.188登陆
FreeBSD 改IP ,不用重启电脑:
在rc.conf里改完后/etc/netstart
版权属于: 三三世界-百宝箱
本文链接: http://www.33f.net/safe/linux_change_ssh_port.html
本文最后更新于2022年04月14日 ,已超过1461天没有更新,若内容或图片失效,请留言反馈。
本文允许转载,但请在转载时请以超链接或其它形式标明文章出处
@Doug Shume it's ok for me , you can post here.
zh.us.to 有效
kms.03k.org 有效
kms.chinancce.com
kms.shuax.com 有效
kms.dwhd.org 有效
kms.luody.info 有效
kms.digiboy.ir 有效
kms.lotro.cc 有效
www.zgbs.cc 有效
cy2617.jios.org 有效
@ 权限问题,试试sudo 再加命令。
你好提示Permission denied 怎么办啊