SSH或FTP协议是否告诉服务器我要连接到哪个域?


25

从Bash shell 使用sshor ftp命令时,我正在连接的服务器是否了解所使用的域名?我知道域名是通过DNS 在本地转换为IP地址的。在HTTP中,发生这种情况之后,服务器也会被告知原始域名,以便提供正确的页面或提供正确的TLS证书(SNI)。

host serverfault.com
GET /

连接到ssh或时是否会发生类似现象ftp

我问是因为我正在尝试进入需要域名的服务器(GoDaddy网络托管),但user@IPaddress由于DNS尚未移至GoDaddy IP地址,因此在尝试通过连接进行连接时,它没有让我进入。


您是否.ssh/config特定于主机名(或IP地址)?你得到什么错误?(嗯,这是支持,但不是达到回答这个问题的目的...)
Andreas Krey

Login authentication failed适用于FTP和Permission deniedSSH。实际的连接很好,我对登录凭证进行了四重检查。
dotancohen

Answers:


25

不可以,SSH客户端不会将您连接的DNS名称传递给服务器。
正确地说,名称是在本地解析为IP地址的。

好像我对FTP错误。
有关详细信息,请参见其他答案。


5
FTP不再适用。看看我的回答
Martin Prikryl

有趣的是,我不知道。我编辑了答案。谢谢!
骗子

实际上,截至2015年,未经编辑的答案在大多数情况下仍然是正确的。不过,这可能会在未来几年发生变化。
dotancohen

我想知道有多少客户支持它。无论如何,您的答案都是正确的。
造假者

@faker我添加了一些有关我知道atm的客户端支持的信息。以后可以做一些进一步的研究。
Martin Prikryl

34

SSH / SFTP协议没有任何机制可将主机提供给服务器。

讨论了有关将此功能添加到OpenSSH的问题,请参见ssh的“虚拟主机”


FTP协议确实具有HOST命令,这是一个相当于HTTP Host标头。它是由相对较新的RFC 7151指定的。RFC于2014年3月发布(尽管第一个草案来自2007年)。因此,它尚未得到普遍支持。

在服务器端,它由IIS(RFC由Microsoft赞助)和ProFTPD(自1.3.6rc1起)支持。其他常见的Unix FTP服务器(例如Pure-FTPd或vsftpd)不支持此功能。

在客户端,它受(my) WinSCP支持。FileZilla不支持它,因为它的作者反对该想法,也不是Cyber​​Duck。我不认识别人。


谢谢您,这将是未来几年人们遇到这个问题并用Google搜索这个问题时的重要考虑因素。
dotancohen

1
很高兴知道。我希望ssh也存在这种情况,因为我确实需要一个前端,该前端可以根据主机名将对一个IP地址的ssh连接分派到不同的服务器。但是我以前的所有研究都同意您的结论,即ssh并不存在它,并且不能轻易将其添加到协议中。
卡巴斯德(Kasperd)

@kasperd,您可以为不同的连接使用不同的端口号。或者,您可以根据用户名进行操作。
AE 2015年

@AE两种方法都不适合我的用例。在我需要确定要将连接发送到哪个服务器时,客户端尚未发送用户名。(此外,我很确定用户名仅以加密方式发送,并且我不知道如何通过ssh连接来提取用户名。)端口号也不起作用,因为我的前端实际上执行了主机名的DNS查找为了找到后端。(前端是双协议栈,后端没有任何公共IPv4地址,前端的目的是使后端只能由IPv4客户端访问。)
kasperd 2015年

2
@kasperd我已经添加了有关将其添加到SSH的OpenSSH邮件列表线程的链接。
Martin Prikryl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.