我正在尝试创建到远程 CentOS v6.8 Web 服务器的 SFTP 连接。当我通过办公网络的 SFTP 连接时,我可以毫无问题地连接,但是当我从其他位置(例如我的手机或客户端的 PC/网络)尝试时,SFTP 不起作用。可以建立与同一帐户的 FTP 连接。
我到目前为止尝试过的事情:我检查了 Iptables。它们没有任何配置,但我根据创建 sftp 用户和连接时遵循的一些教程添加了几行。教程 iptables:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh state NEW !recent: CHECK seconds: 60 hit_count: 4 name: ssh side: source
tcp -- anywhere anywhere tcp dpt:ssh state NEW recent: SET name: ssh side: source
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
在白名单/黑名单中,我找不到任何阻止或允许 IP 地址的内容。托管公司没有提供帮助,因为这是一台非托管服务器,我们希望他们能解决这个问题,而不是向我们收费。
有没有什么地方我可以检查或编辑来解决这个问题?
注意:我是一名后端开发人员,我的服务器/Linux 知识有限,并且我具有 SSH 根访问权限
[编辑 1] 正在运行tcpdump 'tcp[13] & 2 != 0'
这是一次成功的连接:
11:39:12.005721 IP static.kpn.net.51636 > WCMZ005.local.ssh: Flags [S], seq 2112850653, win 65535, options [mss 1380,nop,wscale 7,nop,nop,sackOK], length 0
11:39:12.005764 IP WCMZ005.local.ssh > static.kpn.net.51636: Flags [S.], seq 3218812204, ack 2112850654, win 14600, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
这是我的手机连接。过了一会儿,我的手机显示超时错误
11:37:28.890146 IP 183.214.141.102.11306 > 172.16.3.85.ssh: Flags [S], seq 2750343693, win 14600, options [mss 1380,sackOK,TS val 690507696 ecr 0,nop,wscale 7], length 0
11:37:28.890190 IP 172.16.3.85.ssh > 183.214.141.102.11306: Flags [S.], seq 381070382, ack 2750343694, win 14480, options [mss 1460,sackOK,TS val 955131997 ecr 690507696,nop,wscale 7], length 0
11:37:33.818772 IP scanner2.labs.rapid7.com.https > 172.16.3.212.https: Flags [S], seq 2904545780, win 65535, length 0
11:37:43.506259 IP 216.243.31.2.41000 > 172.16.3.71.http: Flags [S], seq 1532676084, win 65535, length 0
11:37:53.275212 IP 183.214.141.102.sec-pc2fax-srv > 172.16.3.85.ssh: Flags [S], seq 579659209, win 14600, options [mss 1380,sackOK,TS val 690532061 ecr 0,nop,wscale 7], length 0
11:37:53.275254 IP 172.16.3.85.ssh > 183.214.141.102.sec-pc2fax-srv: Flags [S.], seq 83614273, ack 579659210, win 14480, options [mss 1460,sackOK,TS val 955156383 ecr 690532061,nop,wscale 7], length 0
11:38:14.619947 IP 183.214.141.102.63060 > 172.16.3.85.ssh: Flags [S], seq 2648927808, win 14600, options [mss 1380,sackOK,TS val 690553404 ecr 0,nop,wscale 7], length 0
11:38:14.619988 IP 172.16.3.85.ssh > 183.214.141.102.63060: Flags [S.], seq 4153938295, ack 2648927809, win 14480, options [mss 1460,sackOK,TS val 955177727 ecr 690553404,nop,wscale 7], length 0
答案1
您发布的 iptables 规则不包含任何DROP
或。甚至chainREJECT
的默认策略也是。这意味着您的服务器正在接受所有类型的流量。INPUT
ACCEPT
由于您至少可以从一个位置进行连接,这意味着服务运行正常且服务器可访问。您需要检查无法访问所请求服务的位置。
tcpdump
我的建议是在尝试连接时在服务器上运行。如果您没有看到任何 TCP SYN 数据包,则 IP 或端口可能在通往服务器的路径上的某处被阻止。
答案2
你说 :
我可以毫无问题地连接,但是当我从其他位置(例如我的手机或客户端)尝试时,SFTP 不起作用。可以建立具有相同帐户的 FTP 连接。
也许你的 FTP 流量经过了 NAT,并且不是你的 SFTP 流量?你能在路由器上验证一下你的服务器端口是否正确地与外部进行了网络地址转换吗?
您能加入 SFTP 连接失败的日志吗?