我认为这是使用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)
tramp方法ssh1
强制ssh在ssh v1协议模式下使用参数运行-1
.ssh v1已知缺点并且不安全.因此很多站点都禁用了ssh v1协议.
您可以从shell验证这一点ssh -1 me@xxxx.amazonaws.com
.
尝试其他tramp连接方法,如ssh
,sftp
或scpx
.您可以看到所有预先配置的连接方法C-h v tramp-methods
.
如果Moritz Bunkus的答案没有解决问题,那么你可以配置tramp输出的详细程度
M-x customize-variable
RET tramp-verbose
RET
特别是,级别6是"发送和接收的字符串",可以帮助您确定"等待来自远程shell的提示"是因为它没有收到它识别的提示模式,还是因为某些更严重的故障.
如果它只是接收到它无法识别的提示,那么您可能会考虑自定义tramp-login-prompt-regexp
或tramp-shell-prompt-pattern
变量.
(当然,如果你的ssh代理工作正常,那么登录提示应该不相关.)
如果您在Windows中运行Emacs,那么还要看这些问答: