Teilen die SSH- oder FTP-Protokolle dem Server mit, zu welcher Domäne ich eine Verbindung herstellen möchte?

25

Ermittelt der Server, mit dem ich eine Verbindung herstelle, bei Verwendung der Befehle sshoder ftpder Bash-Shell den verwendeten Domänennamen? Ich verstehe, dass der Domainname lokal über DNS in eine IP-Adresse übersetzt wird. In HTTP wird dem Server danach auch der ursprüngliche Domänenname mitgeteilt, um die richtige Seite bereitzustellen oder das richtige TLS-Zertifikat (SNI) zu präsentieren.

host serverfault.com
GET /

Passiert ein ähnliches Phänomen beim Anschließen an sshoder ftp?

Ich frage, weil ich versuche, in einen Server zu ssh (GoDaddy-Webhosting), der einen Domain-Namen erwartet, mich aber nicht einlässt, wenn ich versuche, eine Verbindung über herzustellen, user@IPaddressda der DNS noch nicht auf die GoDaddy-IP-Adresse verschoben ist.

dotancohen
quelle
Haben Sie .ssh/configspezifische Angaben zum Hostnamen (oder zur IP-Adresse)? Welchen Fehler bekommst du? (Hmm, das ist Unterstützung, aber nicht das Ziel, die Frage zu beantworten ...)
Andreas Krey
Nur das Generikum Login authentication failedfür FTP und Permission deniedfür SSH. Die tatsächliche Verbindung ist in Ordnung, und ich habe die Anmeldeinformationen vierfach überprüft.
Dotancohen

Antworten:

25

Nein, die SSH-Clients geben den DNS-Namen, mit dem Sie verbunden sind, nicht an den Server weiter.
Wie Sie richtig sagten, wird der Name lokal in die IP-Adresse aufgelöst.

Anscheinend habe ich mich bei FTP geirrt.
Siehe die andere Antwort für Details.

Schwindler
quelle
5
Das gilt nicht mehr für FTP. Siehe meine Antwort
Martin Prikryl
Interessant, das wusste ich nicht. Ich habe meine Antwort bearbeitet. Vielen Dank!
Fälscher
Tatsächlich ist die unbearbeitete Antwort ab 2015 in den meisten Fällen immer noch richtig. Dies könnte sich jedoch in den nächsten Jahren ändern.
Dotancohen
Ich frage mich, wie viele Kunden es noch unterstützen. In jedem Fall ist Ihre Antwort korrekter.
Fälscher
@faker Ich habe nur wenige Informationen zur clientseitigen Unterstützung hinzugefügt, die ich kenne. Kann später weitere Nachforschungen anstellen.
Martin Prikryl
34

Das SSH / SFTP-Protokoll verfügt über keinen Mechanismus, um den Host für den Server bereitzustellen.

Es gab eine Diskussion über das Hinzufügen dieser Funktionalität zu OpenSSH, siehe "Virtuelle Hosts" für ssh .


Das FTP-Protokoll verfügt über einen HOSTBefehl, der dem HTTP- HostHeader entspricht. Es wird von einem relativ neuen RFC 7151 spezifiziert . Der RFC wurde im März 2014 veröffentlicht (obwohl der erste Entwurf aus dem Jahr 2007 stammt). Als solches wird es noch nicht allgemein unterstützt.

Auf der Serverseite wird es von IIS (der RFC wird von Microsoft gesponsert) und ProFTPD (seit 1.3.6rc1) unterstützt. Es wird nicht von anderen gängigen Unix-FTP-Servern wie Pure-FTPd oder vsftpd unterstützt.

Clientseitig wird es von (meinem) WinSCP unterstützt . Es wird weder von FileZilla unterstützt, da der Autor der Idee widerspricht , noch von CyberDuck. Ich weiß nichts über andere.

Martin Prikryl
quelle
Vielen Dank, dies wird in den nächsten Jahren eine wichtige Überlegung sein, wenn Leute auf dieses Problem stoßen und diese Frage googeln.
Dotancohen
1
Das ist gut zu wissen. Ich wünschte, so etwas gäbe es auch für ssh, da ich ein Frontend benötige, das SSH-Verbindungen, die zu einer IP-Adresse hergestellt wurden, basierend auf dem Hostnamen an verschiedene Server senden kann. Aber alle meine bisherigen Forschungen stimmen mit Ihrer Schlussfolgerung überein, dass es für ssh nicht existiert und dass es nicht einfach zum Protokoll hinzugefügt werden kann.
Kasperd
@kasperd, du könntest verschiedene Portnummern für die verschiedenen Verbindungen verwenden. Oder Sie könnten es basierend auf dem Benutzernamen tun.
AE
@AE Keiner der beiden Ansätze würde für meinen Anwendungsfall funktionieren. Bis ich entscheiden muss, an welchen Server die Verbindung gesendet werden soll, hat der Client den Benutzernamen noch nicht gesendet. (Außerdem bin ich mir ziemlich sicher, dass der Benutzername nur verschlüsselt gesendet wird, und ich weiß nicht, wie ich eine ssh-Verbindung zum Extrahieren des Benutzernamens mitmischen kann.) Die Portnummer funktioniert auch nicht, weil mein Frontend tatsächlich eine DNS-Suche des Hostnamens durchführt um das Backend zu finden. (Das Frontend ist Dual-Stack, die Backends haben keine öffentliche IPv4-Adresse. Der Zweck des Frontends besteht darin, die Backends nur für IPv4-Clients zugänglich zu machen.)
Kasperd
2
@kasperd Ich habe einen Link zum OpenSSH-Mailinglisten-Thread über das Hinzufügen dieses Themas zu SSH hinzugefügt.
Martin Prikryl