一位客户要求我设置一个安全的 FTP 服务器(使用 openSSH 或 FreeSSHd 的 SFTP)。
该新服务器将通过配置为仅允许端口 22 的防火墙。
这听起来可能很奇怪,但出于安全原因,他们不愿意在防火墙上打开其他端口。
他们询问服务器是否可以将端口 22 用于服务器本身以及客户端。
该服务器运行的是 Windows Server 2008 64(带有 freeSSH/OpenSSH)
客户端运行的是 Windows XP(带有 putty/winscp)
我可以使用端口 22 而不是它通常使用的大端口池吗?(用于连接和数据传输)
如果没有,我该如何配置 SFTP 服务器以使用不同的端口?
是否有特定的命令来设置它或 freeSSH/openSSH 的手册?
不同的操作系统是否也会导致我以后可能遇到的其他问题?
答案1
客户端显然假设 SFTP 与常规 FTP 类似,具有单独的控制和数据连接。但对于 SFTP 来说,情况并非如此,SFTP 服务器上只需要端口 22,并且所有内容都会在该端口上进行多路复用。
SFTP 和 FTP 仅在使用方面相似。从网络方面来看,它们是完全不同的设计。
但是,我必须指出,也有 FTPS,它更像常规 FTP,但带有加密功能。
客户端对两端端口 22 的要求可能来自 FTP 的整个主动/被动操作,与 SFTP 无关
答案2
简而言之,如果不付出巨大努力就无法实现这一目标。
Windows 要求临时端口范围至少包含 250 个端口。要将 22 个端口包含在该范围内,您可能需要包含重要系统服务的监听端口(如果 Windows 允许范围从 1024 以下开始,这一点值得怀疑)
Windows 似乎不支持使用 NAT 更改传出端口。
据我所知,Windows 上没有 SSH 实现允许明确设置客户端端口。
您的选择是:
在服务器前面引入一个设备来操纵流量。
构建您自己的经过大量修补的 SSH 客户端应用程序。
让你的客户相信他们的要求是荒谬的。
答案3
在我看来,这完全是一场误会。所以我甚至不愿意回答这个问题。但好吧。
一般情况下,您无需指定 TCP/IP 应用程序的源端口。99.9% 的情况下,源端口由本地操作系统自动分配。
此外,源端口在许多情况下是有关 TCP/IP 连接的唯一唯一信息。因此它无法修复。否则您将无法从本地计算机打开到服务器的多个连接。
即使你能够修复本地端口(我不知道有哪个 SSH/SFTP 客户端允许这样做),你无法在服务器端配置此项. 服务器无法控制客户端使用的本地端口。
虽然可以有解决方法或其他方法,但我无法给您任何方法,因为您没有向我们解释为什么您实际上想要这样做。
我可以连续几个小时这样做,但在我看来这是毫无意义的,因为我认为我实际上并不了解你,或者你或你的客户并不了解你/他们想要什么。