Tramp: ожидание подсказок от удаленной оболочки
У меня проблема с tramp против определенного хоста, когда я использую ssh-ключи для аутентификации. Он отлично работает, когда я не использую аутентификацию по ssh-ключу, но я бы хотел, чтобы пароль не вводился постоянно.
Не знаю, связано ли это, но я использую zsh для оболочки.
Я следовал обоим советам установки tramp-chunksize в 500 и добавления следующего кода в.zshrc:
if [[ "$TERM" == "dumb" ]]
then
unsetopt zle
unsetopt prompt_cr
unsetopt prompt_subst
unfunction precmd
unfunction preexec
PS1='$ '
fi
Но это не работает, и все еще висит с сообщением Tramp: Ожидание подсказок от удаленной оболочки
Любые идеи о том, как предотвратить эту раздражающую проблему? Благодарю.
3 ответа
Для меня Tramp 2.1.19-pre с аутентификацией zsh и SSH kye работает с использованием
(setq tramp-shell-prompt-pattern "^[^$>\n]*[#$%>] *\\(\[[0-9;]*[a-zA-Z] *\\)*")
в моем ~/.emacs
На вопрос был дан ответ, но для людей, которые наткнулись на это, не забудьте проверить, может ли ваша оболочка запрашивать какой-либо пользовательский ввод, прежде чем представлять оболочку. Например, oh-my-zsh проверяет наличие обновлений и запрашивает подтверждение перед их установкой при запуске оболочки. Это заставит tramp бесконечно ждать приглашения, поэтому убедитесь, что вход в систему проходит гладко, когда вы ssh, прежде чем спуститься в кроличью нору tramp.
Я не понимаю, как ваша удаленная оболочка может быть проблемой, если tramp работает с аутентификацией по паролю, но не с аутентификацией по ключу.
Возможное объяснение состоит в том, что ssh
не видит ваш агент ssh, когда вы запускаете его из Emacs. Можете ли вы войти на удаленный компьютер, используя свой ключ с ssh
из M-x shell
или же M-x term
буфер? Если ваш ключ имеет парольную фразу, ssh
нужно как-то получить расшифрованный ключ. Он может подсказать вам напрямую (но я не уверен, что tramp пропустит подсказку ключа), или он может запустить внешнюю программу для запроса ключа (для этого требуется переменная окружения SSH_ASKPASS
быть установленным), или он может получить ключ от вашего агента ssh (для этого требуется переменная окружения SSH_AUTH_SOCK
установить). Ваша проблема может быть в том, что вы не настраиваете SSH_ASKPASS
или же SSH_AUTH_SOCK
в правильном месте, так что это не определено в вашей сессии Emacs.