2009-08-30 43 views
30

如何在使用公钥身份验证通过SSH访问远程主机只有时使用本地Emacs编辑远程主机上的文件?流浪汉处理正常的密码登录相当不错,但我无法弄清楚如何让它与密钥对一起工作。我在两端使用unix/linux。使用公钥认证编辑Emacs的远程文件

+0

远程文件我使用公钥认证的TRAMP。你能详细解释一下有什么问题(以及你使用的是什么版本的Emacs)? 我觉得TRAMP几乎只是调用SSH,所以我首先要确保“ssh yourname @ yourhost”按照预期的方式使用公共密钥登录。 – Phil 2009-08-30 07:54:13

+1

谢谢,您的查询指引我走向正确的轨道,并解决了问题(学会更好地使用SSH)。不过,我仍然想知道如何在SSH标识文件位于非标准位置时使用Tramp,因此您需要使用SSH的'-i'命令行选项。 – pico 2009-08-30 09:45:41

+1

您可以使用ssh-add添加身份文件。 – remvee 2009-08-30 12:39:33

回答

30

没有相当于ssh [email protected] -i private-key.pem的TRAMP。但是,如果运行shell命令ssh-add private-key.pem,则ssh(并因此TRAMP)将自动使用private-key.pem进行身份验证。只需ssh [email protected]将在shell上工作,并打开文件/[email protected]:~/filename.txt将工作在emacs,没有它提示输入密码。

+5

如果您使用'〜/ .ssh/config'文件来管理您的密钥,请参阅[@Sebastien](http://stackoverflow.com/a/10738277/881224)的答案。 – Droogans 2014-05-23 21:56:43

1

如果你在Windows上,你可以很容易地使用plink和tramp。您必须确保plink二进制文件位于您的路径中,并且必须将变量(M-x自定义选项)tramp-default-method自定义为与链接器相结合的plink,它将为您提供所需的内容。

我让你阅读腻子主页如何配置选美添加你的钥匙。

有方法plinkx以及其使用的配置文件名称,这样当你做一个:

C-x C-f /putty_profile: 

它会从你的腻子保存配置文件名putty_profile。

如果你正在使用Linux,通常现代发行版应该有一个全局SSH代理启动X的gnome keyring(命名为seamaorse)。例如在我的Debian的发行版:

[email protected]:~$ ps aux|grep ssh-agent 
chmouel 2917 0.0 0.0 4904 552 ?  Ss Aug30 0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/seahorse-agent --execute x-session-manager 

,如果你做的ssh-ADD(确保你有身份在你的〜/ .ssh正确配置)应请求您的密码并确定所有的X会话。

如果没有发生,您的发行版中可能有其他问题。

13

我不明白你的问题,因为Tramp可以很好地处理公钥认证的SSH连接。 举例来说,假设你已经在~/.ssh/config设置以下配置:

Host remotehost 
    User  mylogin 
    Port  22 
    Hostname remotehost.fqdn 

,并假设你可以在终端正常运行ssh remotehost,那么你就可以打开使用TRAMP CX比照/remotehost:path/to/file

+3

这是一个很好的答案,只需添加'IdentityFile〜/ .ssh/identity-file' – Alex 2015-05-04 16:26:18