更改ssh端口号的一行命令
首先
以下是用一行命令将CentOS服务器的SSH端口号从22更改为另一个号码(本例中为60022)的方法。尽管被称为一行命令,但它很长。但是执行以下命令后,您可以将CentOS服务器的SSH登录端口号从22更改为60022。
SSH_PORT=60022 && cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.`date +"%Y%m%d_%H%M%S"` && sed -i "s/^#Port 22/Port ${SSH_PORT}/g" /etc/ssh/sshd_config && cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.`date +"%Y%m%d_%H%M%S"` && sed -i "s/tcp --dport 22/tcp --dport ${SSH_PORT}/" /etc/sysconfig/iptables && /etc/init.d/sshd restart && /etc/init.d/iptables restart
免责声明
关于使用本文中所提及的命令导致的问题,本方不承担任何责任。不便之处敬请谅解,如果您选择使用该命令,请自行负责。
简而言之
为了提高CentOS和其他Linux服务器的安全性,经常会有人想要将接受SSH连接的端口号从默认的22号改为其他的数字。
当您以root用户登录到CentOS服务器并执行此单行命令时,您可以将SSH连接端口从22更改为60022,如下所示。
请参考下面的说明,以获取更改SSH端口时的详细操作确认步骤。
# SSH_PORT=60022 && cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.`date +"%Y%m%d_%H%M%S"` && sed -i "s/^#Port 22/Port ${SSH_PORT}/g" /etc/ssh/sshd_config && cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.`date +"%Y%m%d_%H%M%S"` && sed -i "s/tcp --dport 22/tcp --dport ${SSH_PORT}/" /etc/sysconfig/iptables && /etc/init.d/sshd restart && /etc/init.d/iptables restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
#
# grep 60022 /etc/ssh/sshd_config
Port 60022
#
# grep 60022 /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 60022 -j ACCEPT
#
尝试执行单行代码的服务器。
我确认了针对CentOS 6.3刚安装完的服务器进行通过一行命令进行ssh端口更改的过程。
CentOS 6.3发布版为2.6.32-279.el6.x86_64版本。
更改 SSH 端口之前的状态示例。
假设在更改SSH端口之前,服务器的状态如下。
[root@example-CentOS-6-3 ~]# cat /etc/redhat-release
CentOS release 6.3 (Final)
[root@example-CentOS-6-3 ~]# grep Port /etc/ssh/sshd_config
#Port 22
#GatewayPorts no
[root@example-CentOS-6-3 ~]# grep 22 /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
[root@example-CentOS-6-3 ~]#
[root@example-CentOS-6-3 ~]# cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.ORG
[root@example-CentOS-6-3 ~]# diff /etc/sysconfig/iptables /etc/sysconfig/iptables.ORG
[root@example-CentOS-6-3 ~]#
[root@example-CentOS-6-3 ~]# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.ORG
[root@example-CentOS-6-3 ~]# diff /etc/ssh/sshd_config /etc/ssh/sshd_config.ORG
[root@example-CentOS-6-3 ~]#
假设初始状态下,/etc/sysconfig/iptables的内容如下。
[root@example-CentOS-6-3 ~]# cat /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
[root@example-CentOS-6-3 ~]#
我们将在初始状态下验证是否可以通过SSH连接到22号端口。
[root@example-CentOS-6-3 ~]# ssh root@[sshポート番号変更サーバのIPアドレスを指定] -p 22
root@[sshポート番号変更サーバのIPアドレス]'s password:
我要确认的是在初始状态下不能通过SSH连接到60022端口。
[root@example-CentOS-6-3 ~]# ssh root@[sshポート番号変更サーバのIPアドレスを指定] -p 60022
ssh: connect to host [sshポート番号変更サーバのIPアドレス] port 60022: Connection refused
[root@example-CentOS-6-3 ~]#
执行SSH端口更改命令示例:
使用root用户登录更改了SSH端口号的CentOS服务器。按照以下命令进行操作。
[root@example-CentOS-6-3 ~]# SSH_PORT=60022 && cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.`date +"%Y%m%d_%H%M%S"` && sed -i "s/^#Port 22/Port ${SSH_PORT}/g" /etc/ssh/sshd_config && cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.`date +"%Y%m%d_%H%M%S"` && sed -i "s/tcp --dport 22/tcp --dport ${SSH_PORT}/" /etc/sysconfig/iptables && /etc/init.d/sshd restart && /etc/init.d/iptables restart
Stopping sshd: [ OK ]
Starting sshd: [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
[root@example-CentOS-6-3 ~]#
更改SSH端口后的操作确认。
以下是一种确认已将SSH端口号从22改为60022的服务器的示例情况。
[root@example-CentOS-6-3 ~]# diff /etc/sysconfig/iptables /etc/sysconfig/iptables.ORG
10c10
< -A INPUT -m state --state NEW -m tcp -p tcp --dport 60022 -j ACCEPT
---
> -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
[root@example-CentOS-6-3 ~]#
[root@example-CentOS-6-3 ~]# diff /etc/ssh/sshd_config /etc/ssh/sshd_config.ORG
13c13
< Port 60022
---
> #Port 22
[root@example-CentOS-6-3 ~]#
[root@example-CentOS-6-3 ~]# grep 60022 /etc/ssh/sshd_config
Port 60022
[root@example-CentOS-6-3 ~]# grep 60022 /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 60022 -j ACCEPT
[root@example-CentOS-6-3 ~]#
我会确认是否无法连接到SSH的22号端口。
[root@example-CentOS-6-3 ~]# ssh example@[sshポート番号変更サーバのIPアドレスを指定] -p 22
ssh: connect to host [sshポート番号変更サーバのIPアドレス] port 22: Connection refused
[root@example-CentOS-6-3 ~]#
我们将确认能够通过SSH连接到60022端口。
[root@example-CentOS-6-3 ~]# ssh example@[sshポート番号変更サーバのIPアドレスを指定] -p 60022
example@[sshポート番号変更サーバのIPアドレス]'s password:
确认从远程服务器更改了SSH端口号的服务器上,能够通过指定22号端口进行SSH登录以及通过指定60022号端口进行SSH登录。
[user@example-ssh-client ~]$ ssh example@[sshポート番号変更サーバのIPアドレスを指定] -p 22
ssh: connect to host XXX.XX.XX.XXX port 22: No route to host
[user@example-ssh-client ~]$
[user@example-ssh-client ~]$ ssh example@[sshポート番号変更サーバのIPアドレスを指定] -p 60022
example@172.31.13.148's password:
[example@example-CentOS-6-3 ~]$
[example@example-CentOS-6-3 ~]$ id
uid=502(example) gid=502(example) groups=502(example) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[example@example-CentOS-6-3 ~]$
以上就是。