Was kann "Roaming vom Server nicht erlaubt" für ssh-Clients bedeuten?

25

Ich kann keine Verbindung zu einer SSH-Serverinstanz herstellen und die ausführliche Ausgabe enthält debug1: Roaming not allowed by server. Folgende vorhersehbare und damit vermeidbare Probleme treten auf:

  • Roaming bedeutet, auf Dienste von verschiedenen Netzwerktypen zuzugreifen. Ich kann nicht herausfinden, was dies im Zusammenhang mit der ausführlichen Ausgabe eines ssh6.6.1-Clients unter Ubuntu 14.04 bedeuten könnte .
  • Es ist nicht klar, ob dies ein Fehler ist oder nicht, und ob dies den Fehler bei der Anmeldung verursacht oder nicht (ich möchte hier jedoch nicht auf den Verbindungsfehler eingehen; keine der Ausgabenachrichten von sshhat BTW -> weitere Probleme und Wartezeiten - Sie wurden gewarnt!)
  • Ich habe site:www.openssh.org roamingin Google mit leerem Ergebnis abgefragt und die Manpages enthalten den Begriff nicht. Es ist Unsinn, es zu benutzen, auch wenn es wegen seiner Mehrdeutigkeit dokumentiert wurde!

Was könnte die Nachricht bedeuten? Wie könnte ich es verwenden, um die große Menge anderer höchst zweideutiger, nicht intuitiver und nicht hilfreicher Fehler und anderer Meldungen von SSH zu debuggen?

Karl Richter
quelle

Antworten:

22

Es ist nicht wirklich eine Fehlermeldung. Es ist nur eine Debug-Meldung, die Sie darüber informiert, dass der Server keine Roaming-Verbindungen akzeptiert.

Roaming ist anscheinend eine experimentelle Funktion, die OpenSSH seit ungefähr 2009 hinzugefügt wurde. Mit dieser Funktion kann ein ssh-Client die Verbindung zu einer Serversitzung trennen und die Sitzung an einem anderen Ort fortsetzen. Siehe hier für eine Diskussion darüber. Googeln von ssh, Roaming und "Martin Forssén" wird andere Seiten aufdecken. Es sieht nicht so aus, als würde es aktiv entwickelt. Ich vermute, die SSH-Entwickler haben es nie dokumentiert, weil es experimentell und vielleicht noch nicht fertig ist.

Nach der Überprüfung des OpenSSH-Quellcodes gibt es eine undokumentierte clientseitige Option, UseRoamingdie auf yes oder no gesetzt werden kann. Das Hinzufügen der Zeile "UseRoaming no" zu Ihrer Client-Konfiguration (normalerweise Ihre .ssh/configDatei) sollte die Debug-Meldung unterdrücken.

Es war mir nicht klar, warum die serverseitige HostbasedAuthenticationEinstellung steuern würde, ob der Server Roaming-Verbindungen akzeptiert oder nicht.

Update: Der Client-Roaming-Support ist offenbar Gegenstand eines Berichts zur Gefährdung durch Computeranfälligkeiten, CVE-2016-0777 . OpenSSH-Versionen 5.4 bis 7.1p1 sind anfällig. Benutzer sollten ein Upgrade auf OpenSSH 7.1p2 oder höher durchführen. Benutzer, die kein Upgrade durchführen können, sollten das Roaming im Client deaktivieren, indem Sie "UseRoaming no" zu ihrer ssh-Client-Konfiguration hinzufügen. Siehe folgendes:

Kenster
quelle
7
Nun, es wird jetzt empfohlen, es auf no zu setzen. mail-archive.com/[email protected]/msg144351.html
nikeee
1
@nikeee: ... und das ist eine Vorsichtsmaßnahme dafür, dass "harmlose" nicht funktionierende Stubs nicht ausgeliefert werden. (Beachten Sie, dass Sie dies noin den Client- Einstellungen
festlegen müssen
@Piskvor, aber es gibt eine ganze Reihe von Devops / Webops-Büchern, die das propagieren. Könnten sie alle falsch sein? Oh.
Florian Heigl
beste erklärung zu dieser konfiguration im netz.
Nils Petersohn
4

Das Changelog von openssh 5.3 unter CentOS6 enthält einen Hinweis:

2009/06/27
     Client-Option UseRoaming hinzufügen. Es tut noch nichts, aber wird es tun
     Steuern Sie, ob der Client versucht, Roaming zu verwenden, wenn dies auf der Seite aktiviert ist
     Server. Von Martin Forssen.
Andrew Daviel
quelle
3

@ ILMostro_7 chmod 600 authorized_keys haben bei mir prima funktioniert.

Zum Nutzen aller anderen, die hier ankommen, indem sie "Roaming nicht vom Server erlaubt" googeln und einen Linux (Ubuntu) -Client verwenden, können Sie diese Warnung korrigieren und dann Folgendes anzeigen :

Agent admitted failure to sign using the key

Die Lösung dafür finden Sie unter https://help.github.com/articles/error-agent-admitted-failure-to-sign/

    # start the ssh-agent in the background
    $ eval "$(ssh-agent -s)"
    # Agent pid 59566 (displays process id)
    $ ssh-add
    # Enter passphrase for /home/you/.ssh/id_rsa: [tippy tap]
    # Identity added: /home/you/.ssh/id_rsa (/home/you/.ssh/id_rsa)

'#' = Kommentar. Sie = Ihr-Benutzername. [Tippy Tap] = Humo [u] r? = Drücken Sie die Eingabetaste.

Ich hoffe, dass jemandem so viel hilft, wie mir diese Fragen und Antworten bereits geholfen haben.

MartinRH
quelle
2

Diese Fehlermeldung angezeigt, wenn /etc/ssh/sshd_confignicht hat HostbasedAuthenticationzu setzen yesauf dem Server.

Ich habe keine Idee warum.

Ein weiteres Problem kann sein:

Überprüfen Sie die Berechtigungen für das Verzeichnis $ USER / .ssh, dessen Eigentümer der Benutzer sein sollte und das chmod 700 lautet. Die Datei authorized_keys sollte ebenfalls chmod 700 sein und dem Benutzer gehören

Nifle
quelle
700? Warum brauchst du ein executebisschen Keyfile?
ILMostro_7
Woher kommt das Zitat? Bitte fügen Sie eine Referenz hinzu.
Karl Richter
ILMostro_7 befindet sich nicht in der Datei, sondern im Verzeichnis. Damit der Benutzer Dateien im Verzeichnis erstellen kann, muss das Ausführungsflag gesetzt sein
IceyEC
@IceyEC Die Antwort schlägt 700 für authorized_keys vor .
mdrozdziel
1
Sollte sein chmod 400. Keine Ahnung, warum ich jemals möchte, dass diese Datei ausführbar ist; und ein Schreibzugriff ist in 99,999% der Fälle auch nicht wünschenswert. sshdüberprüft, ob der .sshOrdner des Benutzers keinen Zugriff für die Gruppe und andere sowie für hat .ssh/authorized_keys. Daher funktionieren die Dauerwellen in der Antwort möglicherweise, sind aber unnötig breit.
Piskvor