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


Bei der Verwendung der ssh oder ftp Befehle von der Bash-Shell, fragt der Server, den ich verbinde, nach dem verwendeten Domain-Namen? Ich verstehe, dass der Domain-Name ist örtlich übersetzt in eine IP-Adresse über DNS. In HTTP wird dem Server danach der ursprüngliche Domänenname mitgeteilt, um die richtige Seite zu bedienen oder um das korrekte TLS-Zertifikat (SNI) zu präsentieren.

host serverfault.com
GET /

Tritt ein ähnliches Phänomen beim Herstellen einer Verbindung auf? ssh oder ftp?

Ich frage, weil ich versuche, in einen Server (GoDaddy Webhosting) zu ssh, der einen Domain-Namen erwartet, aber mich nicht hereinlässt, wenn ich versuche, mich zu verbinden user@IPaddress da der DNS noch nicht auf die GoDaddy-IP-Adresse verschoben wurde.


25
2018-03-01 15:25


Ursprung


Hast du .ssh/config spezifisch für den Hostnamen (oder die IP-Adresse)? Welchen Fehler bekommst du? (Hmm, das ist Unterstützung, aber nicht zum Ziel der Beantwortung der Frage ...) - Andreas Krey
Nur das Generische Login authentication failed für FTP und Permission denied für SSH. Die tatsächliche Verbindung ist in Ordnung, und ich habe die Anmeldedaten vierfach überprüft. - dotancohen


Antworten:


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

Es sieht so aus, als hätte ich mich bei FTP geirrt.
Siehe die andere Antwort für Details.


25
2018-03-01 15:36



Das gilt nicht mehr für FTP. Sehen meine Antwort - Martin Prikryl
Interessant, das wusste ich nicht. Ich habe meine Antwort bearbeitet. Vielen Dank! - faker
Tatsächlich ist die unbearbeitete Antwort in den meisten Fällen noch immer korrekt. Das könnte sich in den nächsten Jahren ändern. - dotancohen
Ich frage mich, wie viele Kunden es noch unterstützen. In jedem Fall ist deine Antwort richtiger. - faker
@faker Ich habe wenig Informationen über clientseitige Unterstützung hinzugefügt, die ich atm kenne. Kann später weitere Nachforschungen anstellen. - Martin Prikryl


Das SSH / SFTP-Protokoll nicht einen Mechanismus haben, um den Host dem Server zur Verfügung zu stellen.

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


Das FTP-Protokoll tut haben HOST Befehl, der dem HTTP entspricht Host Header. Es wird von einem relativ neuen spezifiziert RFC 7151. Der RFC wurde im März 2014 veröffentlicht (obwohl der erste Entwurf von 2007 stammt). Als solches wird es noch nicht allgemein unterstützt.

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

Auf einer Clientseite wird es von unterstützt (meine)  WinSCP. Es wird nicht von FileZilla als Autor unterstützt widersetzen sich der Ideenoch von CyberDuck. Ich weiß nichts über andere.


34
2018-03-02 09:02



Danke, das wird in den nächsten Jahren eine wichtige Überlegung sein, wenn Leute auf dieses Problem stoßen und diese Frage googlen. - dotancohen
Das ist gut zu wissen. Ich wünschte, sowas gäbe es auch für ssh, weil ich ein Frontend benötige, das ssh-Verbindungen, die an eine IP-Adresse vergeben wurden, an verschiedene Server basierend auf dem Hostnamen senden kann. Aber alle meine früheren Forschungen stimmen mit Ihrer Schlussfolgerung überein, dass es für ssh nicht existiert, und es kann nicht einfach zum Protokoll hinzugefügt werden. - kasperd
@ Kasperd, Sie könnten verschiedene Portnummern für die verschiedenen Verbindungen verwenden. Oder Sie könnten es basierend auf dem Benutzernamen tun. - A E
@AE Kein Ansatz würde für meinen Anwendungsfall funktionieren. Wenn ich entscheiden muss, an welchen Server die Verbindung gesendet werden soll, hat der Client den Benutzernamen noch nicht gesendet. (Außerdem bin ich ziemlich sicher, dass der Benutzername nur verschlüsselt gesendet wird, und ich weiß nicht, wie man eine SSH-Verbindung zum Extrahieren des Benutzernamens verwendet.) 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 Back-Ends haben keine öffentliche IPv4-Adresse, der Zweck des Frontends besteht darin, die Backends für Nur-IPv4-Clients zugänglich zu machen.) - kasperd
@kasperd Ich habe einen Link zum OpenSSH Mailinglisten-Thread hinzugefügt, um dies zu SSH hinzuzufügen. - Martin Prikryl