Emacs wird beim Start des SSH-Verbindungsproblems angehalten


7

Ich habe die Optionen debug-on-errorund umgeschaltet und debug-on-quitdann gedrückt , C-gwenn Emacs angehalten hat . Erhielt diese Fehlerausgabe:

Debugger entered--Lisp error: (quit)
  call-process("ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist")
  (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char (point-min)) (if (search-forward-regexp "unknown.+key" nil t) (setq result (concat result " -o ControlPath='tramp.%%r@%%h:%%p'")) (setq result (concat result " -o ControlPath='tramp.%%C'"))))
  (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char (point-min)) (if (search-forward-regexp "unknown.+key" nil t) (setq result (concat result " -o ControlPath='tramp.%%r@%%h:%%p'")) (setq result (concat result " -o ControlPath='tramp.%%C'")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
  (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char (point-min)) (if (search-forward-regexp "unknown.+key" nil t) (setq result (concat result " -o ControlPath='tramp.%%r@%%h:%%p'")) (setq result (concat result " -o ControlPath='tramp.%%C'")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
  (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char (point-min)) (if (search-forward-regexp "unknown.+key" nil t) (setq result (concat result " -o ControlPath='tramp.%%r@%%h:%%p'")) (setq result (concat result " -o ControlPath='tramp.%%C'")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))
  (if (zerop (length result)) nil (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char (point-min)) (if (search-forward-regexp "unknown.+key" nil t) (setq result (concat result " -o ControlPath='tramp.%%r@%%h:%%p'")) (setq result (concat result " -o ControlPath='tramp.%%C'")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPersist") (goto-char (point-min)) (if (search-forward-regexp "missing.+argument" nil t) (progn (setq result ...)))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))))
  (progn (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlMaster") (goto-char (point-min)) (if (search-forward-regexp "missing.+argument" nil t) (progn (setq result "-o ControlMaster=auto")))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (if (zerop (length result)) nil (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char (point-min)) (if (search-forward-regexp "unknown.+key" nil t) (setq result ...) (setq result ...))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPersist") (goto-char (point-min)) (if (search-forward-regexp "missing.+argument" nil t) (progn ...))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))))
  (if (executable-find "ssh") (progn (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlMaster") (goto-char (point-min)) (if (search-forward-regexp "missing.+argument" nil t) (progn ...))) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (if (zerop (length result)) nil (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPath=%C" "host.does.not.exist") (goto-char ...) (if ... ... ...)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlPersist") (goto-char ...) (if ... ...)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))))))
  (progn (if (executable-find "ssh") (progn (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (call-process "ssh" nil t nil "-o" "ControlMaster") (goto-char ...) (if ... ...)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))) (if (zerop (length result)) nil (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ...) (and ... ...)))) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ...) (and ... ...))))))))
  (condition-case nil (progn (if (executable-find "ssh") (progn (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ...) (and ... ...)))) (if (zerop (length result)) nil (let ((temp-buffer ...)) (save-current-buffer (set-buffer temp-buffer) (unwind-protect ... ...))) (let ((temp-buffer ...)) (save-current-buffer (set-buffer temp-buffer) (unwind-protect ... ...))))))) (error nil))
  (let ((result "") (case-fold-search t)) (condition-case nil (progn (if (executable-find "ssh") (progn (let ((temp-buffer ...)) (save-current-buffer (set-buffer temp-buffer) (unwind-protect ... ...))) (if (zerop (length result)) nil (let (...) (save-current-buffer ... ...)) (let (...) (save-current-buffer ... ...)))))) (error nil)) result)
  (defvar tramp-ssh-controlmaster-options (let ((result "") (case-fold-search t)) (condition-case nil (progn (if (executable-find "ssh") (progn (let (...) (save-current-buffer ... ...)) (if (zerop ...) nil (let ... ...) (let ... ...))))) (error nil)) result) "Call ssh to detect whether it supports the Control* arguments.\nReturn a string to be used in `tramp-methods'.")
  eval-buffer(#<buffer  *load*-504950> nil "/usr/share/emacs/24.5/lisp/net/tramp-loaddefs.el" nil t)  ; Reading at buffer position 7082
  load-with-code-conversion("/usr/share/emacs/24.5/lisp/net/tramp-loaddefs.el" "/usr/share/emacs/24.5/lisp/net/tramp-loaddefs.el" nil t)
  #<subr require>(tramp-loaddefs nil nil)
  ad-Advice-require(#<subr require> tramp-loaddefs)
  apply(ad-Advice-require #<subr require> tramp-loaddefs)
  require(tramp-loaddefs)
  byte-code("\300\301!\207" [require tramp-loaddefs] 2)
  byte-code("\300\301\302\303#\210\300\304\305\306#\210\300\304\307\306#\210\300\304\310\306#\210\300\304\311\306#\210\300\304\312\306#\210\300\304\313\306#\210\300\314\315\316#\210\300\317\320\316#\210\300\304\321\306#\210\300\322\323\306#\210\300\324\325\306#\210\300\322\326\306#\210\300\327\330\316#\210\300\331\332\303#\210\300\331\333\303#\210\300\331\334\303#\210\300\331\335\303#\210\300\331\336\303#\210\300\337\340\341#\210\342\343!\203\206

Und der SSH-Daemon fordert auch über das Programm zur Eingabe des Passworts auf ksshaskpass: Hier ist der Screenshot.

ssh askpass Screenshot

Antworten:


6

Ähnlich wie bei Emacs Bug # 20015 kann dies vermieden werden, indem tramp-ssh-controlmaster-optionsvor dem Laden von Tramp eingestellt wird.

(setq tramp-ssh-controlmaster-options
      "-o ControlMaster=auto -o ControlPath='tramp.%%C' -o ControlPersist=no")
(require 'tramp)

Oder mit use-package:

(use-package tramp
  :init (setq tramp-ssh-controlmaster-options
              "-o ControlMaster=auto -o ControlPath='tramp.%%C' -o ControlPersist=no"))

Obwohl es mir wie ein Fehler in Ihrem SSH-Setup erscheint, eine Passwortabfrage für einen nicht vorhandenen Host zu erhalten.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.