Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ssh配置的emacs中的Tramp模式_Emacs_Ssh_Tramp - Fatal编程技术网

使用ssh配置的emacs中的Tramp模式

使用ssh配置的emacs中的Tramp模式,emacs,ssh,tramp,Emacs,Ssh,Tramp,我认为这是使用tramp的一个非常基本的问题,但它对我不起作用。 我有我的~/.ssh/config文件,它指向我的AmazonEC2机器 Host amazon Hostname xxxx.amazonaws.com Port yyy User me IdentityFile ~/.ssh/ubuntu ForwardAgent yes 我可以在终端上轻松地使用ssh-amazon,然后转到amazonec2(因此我的配置是正确的),但使用的是emacs 我有:

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

Host amazon
   Hostname xxxx.amazonaws.com
   Port yyy
   User me
   IdentityFile ~/.ssh/ubuntu
   ForwardAgent yes
我可以在终端上轻松地使用ssh-amazon,然后转到amazonec2(因此我的配置是正确的),但使用的是emacs 我有:

我总是犯这个错误 在Aquamacs中:

Process *tramp/ssh1 amz* exited abnormally with code 255
在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
我还有其他ssh配置,它们通过ssh连接到本地机器上的虚拟机,它们也有同样的问题


非常感谢您的帮助。

tramp方法
ssh1
强制ssh在ssh v1协议模式下运行,参数为
-1
。ssh v1存在已知的弱点,不安全。因此,许多站点禁用ssh v1协议

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


尝试其他tramp连接方法,如
ssh
sftp
scpx
。您可以使用
C-h v tramp方法查看所有预配置的连接方法

如果Moritz Bunkus的答案不能解决问题,那么您可以使用
M-x
customize变量
RET
tramp verbose
RET

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

如果它只是接收到一个无法识别的提示,那么您可以考虑定制
tramp登录提示regexp
tramp shell提示模式
变量

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

如果您在Windows中运行Emacs,还可以查看以下问题和解答:


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

      像这样:

      C-x C-f /sshx:amazon:
      

      谢谢你,亚马逊不接受ssh-1,但它接受ssh-2,我仍然有同样的问题。至少现在我没有做ssh1:)所以看起来我的emacs上的tramp verbose级别是9,所以它相当高。我用ssh2运行它,我得到加载tramp…done tramp:在ssh2使用nil打开连接。。。tramp:等待远程shell tramp的提示:等待60秒等待远程shell tramp的提示过程操作:登录失败hmm还有其他想法吗?如果找不到远程提示,那么我经常会遇到另一方面的shell运行类型问题。据我所知,tramp总是在远程shell为
      /bin/sh
      的情况下执行命令。现在,
      /bin/sh
      可以成为几乎所有POSIX兼容shell的符号链接,当前基于Debian/Ubuntu的发行版通常使用
      dash
      而不是
      bash
      。另外,如果使用花哨的提示,
      zsh
      bash
      也会出现问题。我的建议是:1。如果
      /bin/sh
      是指向
      dash
      的符号链接,请尝试将其更改为
      bash
      。2.如果
      TERM
      变量等于
      dumb
      ,那么不要在RC文件中设置一个奇特的提示。值得一看的是
      manssh\u config
      为什么ssh/sshx没有被交换,我永远不会理解。
      C-x C-f /sshx:amazon: