1

我正在编写一个新的 SFTP 子系统,它不是从本地文件系统读取文件,而是从 API 接口读取。在这里,我能够实现 SFTP 子系统。但我想获得 SFTP 用户用来连接我的 SFTP 服务器的 FQDN。

要提供有关我的方案的更多详细信息...

我的 SFTP 服务器将有两个或多个 CNAME(别名)记录。例如,如果服务器名称是sftp-testdomain.com,则sample1.sftp-testdomain.comCNAMEsample2.sftp-testdomain.com将可用。我想在 SFTP 子系统中获取 FQDN 以在启动 SFTP 服务器之前执行一些检查。

任何人都可以通过向我指出一些参考资料或向我提供有关此要求可行性的一些详细信息来帮助我吗?

4

1 回答 1

4

SSH 服务器(只允许 SFTP 子系统)永远不会学习客户端用来查找服务器 IP 地址的主机名。

所有通信仅使用 IP 地址进行。

SSH/SFTP 缺乏一种机制来为服务器提供主机名以支持虚拟服务器,HTTP 或 FTP 协议具有(分别为Host标头HOST命令)。

即使有这样的机制,您也可能无法使用提供的主机名进行安全检查。客户端完全可以随意选择哪个服务器别名来提供给服务器。


因此,唯一的解决方案是使用 IP 地址或端口号来区分实例。或者将主机名包含在用户名中(类似于user@hostor user_host)。

SSH_CONNECTION如果您正在为 OpenSSH SSH 服务器编写子系统,您可以从环境变量中找到用于连接到 SSH 服务器的 IP 地址和端口。

用户名在USERLOGNAME变量中。

于 2014-12-17T09:04:02.870 回答