我们有 2 台远程服务器用于冗余,SFTP 连接由 F5 VIP 分发到这 2 台服务器。我们使用(是 VIP)和 F5 连接到服务器。sftp [email protected]
xxx.yyy.zzz.www
在sftp
脚本中我们想知道我们正在连接哪个服务器。是否有任何命令可以在 SFTP 中显示远程主机名?
答案1
没有sftp
命令或调用来获取已连接机器的主机名。
然而,如果
- 你没有在 sftp 服务器上“chroot”
- 你大概了解 sftp 服务器的操作系统
假设 sftp 服务器运行的是 Linux,那么你可以获取主机名,例如
$ echo "get /etc/hostname /tmp/hostname" | sftp my-sftp-server
$ cat /tmp/hostname; rm /tmp/hostname
mysftp.example.domain
答案2
正如我在 Stack Overflow 上对您最初的问题所评论的那样,SFTP 协议没有这样的 API。因此,在任何 SFTP 客户端中都不可能存在这样的命令。
如果您可以通过 shell 访问服务器,并且您有一个可以通过同一连接同时执行 shell 和 SFTP 的 SFTP 客户端(我相信有些可以这样做),那么您可以使用 shellhostname
命令(或远程操作系统的等效命令)。
您可以做的另一件事是让服务器在连接开始时显示一个可以识别它们的 SSH 横幅。
答案3
没有sftp
命令可以获取主机名。但您可以尝试一种解决方法。打开另一个控制台并使用命令:
netstat -a|grep :22
获取主机的主机名(如果您有可用的 DNS 解析)。如果您在工作主机的端口 22 上有多个连接,则会出现问题。
如果这不起作用,您可以ssh
对 VIP 地址执行此操作,获取所有 IP 并过滤 VIP。这样您就会获得当前机器的 IP。