使用ssh config在emacs中进行Tramp模式

Mat*_*lda 12 emacs ssh tramp

我认为这是使用tramp的一个非常基本的问题,但它对我不起作用.我的〜/ .ssh/config文件指向我的amazon ec2机器

Host amazon
   Hostname xxxx.amazonaws.com
   Port yyy
   User me
   IdentityFile ~/.ssh/ubuntu
   ForwardAgent yes
Run Code Online (Sandbox Code Playgroud)

我可以从我的终端轻松做ssh amazon我去亚马逊ec2(所以我的配置是正确的),但在emacs我做:

C-x C-f /ssh1:amazon:
Run Code Online (Sandbox Code Playgroud)

我总是在Aquamacs中得到这个错误:

Process *tramp/ssh1 amz* exited abnormally with code 255
Run Code Online (Sandbox Code Playgroud)

在Emacs中:

tramp: Opening connection at amz using ssh1...
tramp: Waiting for prompts from remote shell
tramp: Waiting 60s for prompt from remote shell
tramp-process-actions: Login failed
Run Code Online (Sandbox Code Playgroud)

我还有其他ssh配置,他们ssh到我的本地机器上的虚拟盒子,他们有同样的问题.

我非常感谢任何帮助.

leg*_*cia 29

值得尝试的一件事是使用sshx连接方法.这使得tramp尝试避免远程主机上的任何非标准shell配置.

像这样:

C-x C-f /sshx:amazon:
Run Code Online (Sandbox Code Playgroud)

  • 为什么 ssh/sshx 没有交换我永远不会明白。 (4认同)

Mor*_*kus 8

tramp方法ssh1强制ssh在ssh v1协议模式下使用参数运行-1.ssh v1已知缺点并且不安全.因此很多站点都禁用了ssh v1协议.

您可以从shell验证这一点ssh -1 me@xxxx.amazonaws.com.

尝试其他tramp连接方法,如ssh,sftpscpx.您可以看到所有预先配置的连接方法C-h v tramp-methods.


phi*_*ils 6

如果Moritz Bunkus的答案没有解决问题,那么你可以配置tramp输出的详细程度
M-x customize-variable RET tramp-verbose RET

特别是,级别6是"发送和接收的字符串",可以帮助您确定"等待来自远程shell的提示"是因为它没有收到它识别的提示模式,还是因为某些更严重的故障.

如果它只是接收到它无法识别的提示,那么您可能会考虑自定义tramp-login-prompt-regexptramp-shell-prompt-pattern变量.

(当然,如果你的ssh代理工作正常,那么登录提示应该不相关.)

如果您在Windows中运行Emacs,那么还要看这些问答: