Tramp: Warten auf Eingabeaufforderungen von der Remote-Shell

5105
grm

Ich habe ein Problem mit dem Tramp gegen einen bestimmten Host, wenn ich ssh-keys für die Authentifizierung verwende. Es funktioniert gut, wenn ich die ssh-key-Authentifizierung nicht verwende, aber ich möchte die Eingabe des Passworts ständig verhindern.

Ich weiß nicht, ob es verwandt ist, aber ich benutze zsh für die Shell.

Ich habe die beiden Tipps befolgt, tramp-chunksize auf 500 zu setzen und den folgenden Code zu .zshrc hinzuzufügen:

if [[ "$TERM" == "dumb" ]] then unsetopt zle unsetopt prompt_cr unsetopt prompt_subst unfunction precmd unfunction preexec PS1='$ ' fi 

Es funktioniert jedoch nicht und hängt immer noch mit der Meldung "Tramp: Warten" auf Eingabeaufforderungen von der Remote-Shell

Irgendwelche Ideen, wie man dieses nervige Thema verhindern kann? Vielen Dank.

3
Für den Fall sollten Sie Ihr Betriebssystem und Ihre Emacs-Version erwähnen. Und wie Sie normalerweise Ihren ssh-Schlüssel eingeben, ist wahrscheinlich relevant. Gilles vor 13 Jahren 0

3 Antworten auf die Frage

6
Florian Diesch

Für mich funktioniert Tramp 2.1.19-pre mit zsh und SSH-Authentifizierung mit kye

(setq tramp-shell-prompt-pattern "^[^$>\n]*[#$%>] *\\(\[[0-9;]*[a-zA-Z] *\\)*") 

in meinen ~ / .emacs

3
Gilles

Ich sehe nicht, wie Ihre Remote-Shell das Problem sein könnte, wenn Tramp mit der Kennwortauthentifizierung arbeitet, nicht jedoch mit der Schlüsselauthentifizierung.

Eine mögliche Erklärung ist, dass sshIhr SSH-Agent nicht angezeigt wird, wenn Sie ihn von Emacs aus ausführen. Können Sie sich mit ssheinem Schlüssel M-x shelloder einem M-x termPuffer beim Remote-Computer anmelden ? Wenn Ihr Schlüssel eine Passphrase hat, sshmuss er den entschlüsselten Schlüssel irgendwie abrufen. Es kann Sie direkt auffordern (aber ich bin mir nicht sicher, ob Tramp die Schlüsselabfrage durchlassen würde), oder es kann ein externes Programm starten, um Sie zur Eingabe der Taste aufzufordern (dazu muss die Umgebungsvariable SSH_ASKPASSgesetzt sein) oder es kann der Schlüssel von Ihrem SSH-Agenten (dazu muss die Umgebungsvariable SSH_AUTH_SOCKgesetzt sein). Ihr Problem könnte sein, dass Sie keine Einstellungen vornehmen SSH_ASKPASSoder sich SSH_AUTH_SOCKan der richtigen Stelle befinden, sodass dies nicht in Ihrer Emacs-Sitzung definiert ist.

Es funktioniert sowohl mit Mx-Shell als auch mit Mx. Tramp protokolliert den Befehl 'ssh' -l -q -e keine && exit || exit '(das funktioniert auch gut mit der Mx-Shell oder dem Mx-Begriff). grm vor 13 Jahren 0
3
fakedrake

Die Frage wurde bereits beantwortet. Wenn Sie jedoch darauf stoßen, sollten Sie vor der Präsentation der Shell prüfen, ob Ihre Shell nach Benutzereingaben fragt. Zum Beispiel sucht oh-my-zsh nach Updates und bittet um Bestätigung, bevor diese beim Shell-Start installiert werden. Dies führt dazu, dass der Tramp endlos auf eine Eingabeaufforderung wartet. Stellen Sie daher sicher, dass der Login reibungslos verläuft, wenn Sie ssh verwenden, bevor Sie den Tramp Rabbithole hinuntergehen.