當從 Bash shell 使用ssh
或ftp
命令時,我要連接的伺服器是否了解所使用的網域名稱?據我了解,該網域是本地透過 DNS 轉換為 IP 位址。在 HTTP 中,發生這種情況後,伺服器也會被告知原始域名,以便提供正確的頁面,或提供正確的 TLS 憑證 (SNI)。
host serverfault.com
GET /
連結ssh
或時是否也會出現類似的現象ftp
?
我之所以這麼問,是因為我正在嘗試 ssh 到需要網域的伺服器(GoDaddy 虛擬主機),但當我嘗試透過以下方式連接時,user@IPaddress
由於 DNS 尚未移動到 GoDaddy IP 位址,因此不允許我進入。
答案1
不,SSH 用戶端不會將您連接到的 DNS 名稱傳遞到伺服器。
正如您所說,名稱在本機解析為 IP 位址。
看來我對FTP的理解是錯的。
詳情請參閱另一個答案。
答案2
SSH/SFTP 協定才不是有任何機制向伺服器提供主機。
有一個關於將此功能添加到 OpenSSH 的討論,請參閱ssh 的“虛擬主機”。
FTP協定做haveHOST
指令,相當於 HTTPHost
標頭。它是由一個相對較新的RFC 7151。 RFC 於 2014 年 3 月發布(儘管初稿是 2007 年的)。因此,它尚未得到普遍支持。
在伺服器端,它由 IIS 支援(RFC 由 Microsoft 贊助)並且FTPD協定(自 1.3.6rc1 起)。其他常見的 Unix FTP 伺服器(例如 Pure-FTPd 或 vsftpd)不支援它。
在客戶端,它由(我的) WinSCP。作為其作者,FileZilla 不支援它反對這個想法,也不是 CyberDuck 的。我不知道其他人的情況。