使用公共密钥身份验证使用Emacs编辑远程文件

时间:2009-08-30 07:06:59

标签: emacs ssh tramp

当我可以使用公钥验证通过SSH访问远程主机 时,如何使用本地Emacs编辑远程主机上的文件? Tramp处理正常的密码登录很好,但我无法弄清楚如何使用密钥对。我正在两端使用unix / linux。

3 个答案:

答案 0 :(得分:37)

没有TRAMP等同于ssh user@host -i private-key.pem。但是,如果运行shell命令ssh-add private-key.pem,则ssh(以及TRAMP)将自动使用private-key.pem进行身份验证。简单地ssh user@host将在shell上运行,打开文件/user@host:~/filename.txt将在emacs中运行,而不会提示输入密码。

答案 1 :(得分:27)

我没有得到您的问题,因为Tramp与公钥验证的SSH连接完美配合。 例如,假设您在~/.ssh/config中设置了以下配置:

Host remotehost
    User     mylogin
    Port     22
    Hostname remotehost.fqdn

并假设您可以在终端中正确运行ssh remotehost,然后您可以使用TRAMP C-x C-f打开您的远程文件/remotehost:path/to/file

答案 2 :(得分:1)

如果您使用的是Windows,则可以轻松使用plink和tramp。你必须确保plink二进制文件在你的路径中并且必须自定义变量(M-x customize-option)tramp-default-method到plink,它与pageant结合起来可以得到你想要的东西。

我让你阅读putty主页如何配置选美以添加你的密钥。

还有plinkx方法,它使用配置文件名称,所以当你执行:

C-x C-f /putty_profile:

它将从您的putty保存的个人资料名称中获取putty_profile。

如果您使用Linux,通常现代发行版应该有一个gnome密钥环(命名为seahorse),使用全局SSH代理启动X.关于我的debian发行版的例子:

chmouel@lutece:~$ 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会话。

如果没有发生,您的发行版中的其他地方可能会出现问题。