sftp 連接遠端 server 超時,

Wireshark 抓包,顯示 Host administratively prohibited,很大程度是遠端 server 防火牆問題。

解決方法1:
如果是內部 server,關閉遠端 server 的防火牆服務即可,
$ sudo systemctl stop firewalld.service $ sudo systemctl disable firewalld.service
解決方法2:
保持防火牆服務,調整 iptables 服務,例如,
$ sudo iptables -t filter -I INPUT -p tcp -s 192.168.2.10 --dport 14920 -j ACCEPT # 允許源地址為 192.168.2.10 的 tcp 數據包通過 server 的 14920 端口 $ sudo iptables -t filter -I OUTPUT -p tcp --dport 14920 -j ACCEPT # 允許 server 的任何外發數據包通過 14920 端口
經過上述設置后,就能臨時開啟 sftp 服務 (假設已設置 sftp 走 14920 端口,而不是默認的 22 端口),重啟后失效。
注意,CentOS 7 默認沒有安裝 iptables-services,要先安裝,
$ sudo yum install iptables-services
查看現有規則,
$ sudo iptables -L -n
重新調整 iptables 如本例最開始兩條命令,然后保存設置並重啟服務,
$ sudo service iptables save $ sudo systemctl restart iptables.service
可查看保存的設置 /etc/sysconfig/iptables-config
===========================================
常用的設置參考,
//先允許所有,不然有可能會杯具 iptables -P INPUT ACCEPT // 清空所有默認規則 iptables -F // 清空所有自定義規則 iptables -X // 所有計數器歸0 iptables -Z // 允許來自於lo接口的數據包(本地訪問) iptables -A INPUT -i lo -j ACCEPT // 開放22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT // 開放21端口(FTP) iptables -A INPUT -p tcp --dport 21 -j ACCEPT // 開放80端口(HTTP) iptables -A INPUT -p tcp --dport 80 -j ACCEPT // 開放443端口(HTTPS) iptables -A INPUT -p tcp --dport 443 -j ACCEPT // 允許ping iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT // 允許接受本機請求之后的返回數據 RELATED,是為FTP設置的 iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT // 其他入站一律丟棄 iptables -P INPUT DROP // 所有出站一律綠燈 iptables -P OUTPUT ACCEPT // 所有轉發一律丟棄 iptables -P FORWARD DROP
(完)
