当我试图将我的SSH端口设置为22以外(编辑/etc/sysconfig/iptables和/etc/ssh/sshd_config )时,我最终被locking在服务器之外,不得不启动进入救援模式来解决问题。
现在我经历了几次这个循环,每一次都更加小心,我正在做正确的事情。
有可能是我的新端口(在这种情况下是33933)在某处被阻止 – 或者还有另外一个引用22的文件需要修改?
这是在一个全新的专用盒子上的CentOS 6上,我刚刚从oneprovider.com(online.net经销商)设置。
您可以将ssh设置为多个端口。 刚刚有多个港口线,例如
Port 22 Port 1500
这样,您可以在排除端口33933故障时,使端口22仍能正常工作。
接下来,在你改变你的configuration并重新启动ssh(你可以用一个活动连接重新启动ssh)之后,testing服务器正在监听那个端口。
netstat -ltnp
发布的输出。
我猜想用CentOS是SELinux阻止你的连接。 尝试
selinux port -l | grep ssh
看到可能只有22端口是允许的。
semanage port -a -t ssh_port_t -p tcp 39333
会添加端口39333到允许的端口为SSH。 validation
semanage port -l | grep ssh
你应该全部设置。
第一个问题是,你在编辑文件之后是否真的加载了新的configuration?
我build议设置iptables来允许两个端口上的传入连接作为第一步。 其次,你可以testingsshd的更新,而不会破坏当前的ssh连接。 如果你键入service sshd reload ,你应该能够validation你能够启动一个新的ssh连接,同时保持旧的连接,这样你仍然可以恢复你的改变,如果他们不工作。
如果在服务器上安装了inetd或xinetd ,则可以使用它来configuration独立于主服务器运行的辅助sshd端口。 这里是一个如何在xinetd中看到的例子:
service second-ssh { type = UNLISTED flags = REUSE socket_type = stream protocol = tcp port = 64739 wait = no user = root disable = no server = /usr/sbin/sshd server_args = -i }
要知道另一个端口是否被阻塞在networking的某个地方,你可以在连接的每一端使用tcpdump来查看SYN数据包是由一端发送,还是由另一端接收。 如果事实certificate被阻塞,可以使用traceroute来查找它被阻塞的位置: traceroute -n -T -p 33933 example.com
编辑这些文件后,您需要重新启动这两个服务才能应用新的configuration。
只需运行service sshd restart && service iptables restart ,你应该能够访问。