更新
正如 Khaled 所建议的,我更改了我的 netstat 命令
netstat -lnp | grep 3899
tcp 0 0 :::3899 :::* LISTEN 10333/sshd
那么它不应该倾听吗?
我将 centos 5.5 机器上的 ssh 端口改为 3899。但我似乎无法远程登录。我以前也这样做过,但上次我不需要做任何其他更改就可以让它正常工作。
iptables -L | grep 3899
[empty response]
iptables -L | grep 22
[empty response]
iptables -L | grep ssh
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
答案1
是的,您可能需要调整防火墙规则。要查看当前规则:
iptables -nvL
如果您看到一堆 ACCEPT 规则和最后的 REJECT 规则,则意味着您的主机正在阻止除指定连接之外的所有传入连接。
我思考您可以使用system-config-securitylevel
基于菜单的工具打开自定义端口。在终端中运行该程序并选择“自定义”按钮。添加3899:tcp
到其他港口列出并保存更改。我不确定 system-config-securitylevel 是否采用端口号而不是服务名称。如果在该工具中指定端口号不起作用,您可以尝试添加自定义“myssh”服务名称,/etc/services
然后在 system-config-securitylevel 中使用该名称。
你可以运行
nmap -sS -v server.example.com
从外部机器扫描您的系统以确定哪些端口是开放的。
进行此更改的另一种方法是手动编辑/etc/sysconfig/iptables
,并将现有的 ssh 条目复制到其正下方的另一个条目,但将端口从 ssh 更改为 3899。请注意,通过手动编辑 iptables 文件很容易搞砸防火墙配置,因此如果您选择这种方式,请务必小心。进行更改后,重新启动计算机,或运行/etc/init.d/iptables restart
以加载您的更改。
答案2
运行这个,它应该添加允许连接到端口 3899 的条目
iptables -I INPUT -p tcp --dport 3899 -j ACCEPT
您的帖子没有显示 INPUT 链的默认策略是什么,或者其他规则是什么。
复制粘贴此处的输出
iptables-save
然后netstat -nlp
我们就会知道帮助您所需的所有详细信息。
答案3
答案可能是肯定的——如果您的 iptables 规则处于活动状态,则目标端口 SSH(dpt:ssh
)规则仅覆盖端口 22——由 IANA 分配并在 /etc/services 中列出的标准 SSH 端口。
您需要更改该规则以允许流量到端口 3899(或任何新的 SSH 端口) - 在 CentOS 上,我相信 ipables 规则位于/etc/sysconfig/iptables
答案4
无论使用 dpt:ssh 还是 CentOS 都会使用端口 22,您应该手动打开端口 3899
您可以通过运行以下命令来执行此操作:
iptables -I INPUT -p tcp --dport 3899 -j ACCEPT