在 Bash shell 中使用ssh
orftp
命令时,我要连接的服务器是否知道所使用的域名?我了解域名是通过 DNS在本地翻译成 IP 地址的。在 HTTP 中,发生这种情况后,服务器也会被告知原始域名,以便提供正确的页面,或提供正确的 TLS 证书 (SNI)。
host serverfault.com
GET /
ssh
连接到or时是否会出现类似现象ftp
?
我问是因为我试图通过 ssh 连接到需要域名的服务器(GoDaddy 虚拟主机),但是当我尝试通过连接时没有让我进入,user@IPaddress
因为 DNS 尚未移动到 GoDaddy IP 地址。
SSH/SFTP 协议没有任何机制将主机提供给服务器。
有关于将此功能添加到 OpenSSH 的讨论,请参阅ssh 的“虚拟主机”。
FTP协议确实有
HOST
命令,相当于HTTPHost
头。它由相对较新的RFC 7151指定。RFC 于 2014 年 3 月发布(尽管初稿来自 2007 年)。因此,它尚未得到普遍支持。在服务器端,它受到 IIS(RFC 由 Microsoft 赞助)和ProFTPD(自 1.3.6rc1 起)的支持。其他常见的 Unix FTP 服务器(如 Pure-FTPd 或 vsftpd)不支持它。
在客户端,它由(我的) WinSCP支持。FileZilla 不支持它,因为它的作者反对这个想法,CyberDuck 也不支持。我不知道其他人。
不,SSH 客户端不会将您连接到的 DNS 名称传递给服务器。
正如您所说的那样,名称在本地解析为 IP 地址。
看来我对 FTP 的看法是错误的。
有关详细信息,请参阅其他答案。