web-dev-qa-db-ja.com

トランプ:リモートシェルからのプロンプトを待っています

認証にsshキーを使用すると、特定のホストに対するトランプに問題があります。 ssh-key認証を使用しない場合は正常に機能しますが、パスワードを常に入力しないようにしたいと思います。

関連するかどうかはわかりませんが、シェルにはzshを使用しています。

Tramp-chunksizeを500に設定することと、次のコードを.zshrcに追加することの両方のヒントに従いました。

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

しかし、それは機能しておらず、メッセージ「トランプ:リモートシェルからのプロンプトを待っています」でハングしています。

この厄介な問題を防ぐ方法についてのアイデアはありますか?ありがとう。

4
grm

私にとってTramp2.1.19-pre withzshおよびSSHkye認証は

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

私の〜/ .emacsで

6
Florian Diesch

トランプがパスワード認証では機能するがキー認証では機能しない場合、リモートシェルがどのように問題になるかわかりません。

考えられる理由は、Emacs内から実行したときにsshがsshエージェントを認識しないことです。 M-x ShellまたはM-x termバッファからsshを使用してキーを使用してリモートマシンにログインできますか?キーにパスフレーズがある場合、sshは何らかの方法で復号化されたキーを取得する必要があります。直接プロンプトを表示することも(ただし、トランプがキーにプロンプ​​トを表示するかどうかはわかりません)、外部プログラムを起動してキーの入力を求めることもできます(これには、環境変数SSH_ASKPASSを設定する必要があります)。 、またはsshエージェントからキーを取得できます(これには、環境変数SSH_AUTH_SOCKを設定する必要があります)。問題は、SSH_ASKPASSまたはSSH_AUTH_SOCKを適切な場所に設定していないため、Emacsセッションで定義されていない可能性があります。

質問は回答済みですが、これに遭遇した人は、シェルを提示する前に、シェルがユーザー入力を要求する可能性があるかどうかを確認することを忘れないでください。たとえば、 oh-my-zsh 更新を確認し、シェルの起動時にインストールする前に確認を求めます。これにより、トランプはプロンプトを際限なく待つことになります。そのため、トランプのウサギの穴を降りる前に、sshを実行するときにログインがスムーズに行われることを確認してください。

3
fakedrake