Tramp: ожидание подсказок от удаленной оболочки

5093
grm

У меня проблема с 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
Вы должны указать свою операционную систему и версию Emacs, на всякий случай. И то, как вы обычно вводите свой ssh-ключ passphare, если таковой имеется, вероятно, имеет значение. Gilles 14 лет назад 0

3 ответа на вопрос

6
Florian Diesch

Для меня Tramp 2.1.19-pre с аутентификацией zsh и SSH kye работает с использованием

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

в моем ~ / .emacs

3
Gilles

Я не понимаю, как ваша удаленная оболочка может быть проблемой, если 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.

Работает как с Mx shell, так и с Mx term. Бродяга регистрирует команду 'ssh -l -q -e нет && выход || exit '(который также хорошо работает с Mx shell или Mx term). grm 14 лет назад 0
3
fakedrake

На вопрос был дан ответ, но для людей, которые наткнулись на это, не забудьте проверить, может ли ваша оболочка запрашивать какой-либо ввод пользователя, прежде чем представлять оболочку. Например, oh-my-zsh проверяет наличие обновлений и запрашивает подтверждение перед их установкой при запуске оболочки. Это заставит tramp бесконечно ждать приглашения, поэтому убедитесь, что вход в систему проходит гладко, когда вы ssh, прежде чем спуститься в кроличью нору tramp.

Похожие вопросы