当我可以使用公钥验证通过SSH访问远程主机 时,如何使用本地Emacs编辑远程主机上的文件? Tramp处理正常的密码登录很好,但我无法弄清楚如何使用密钥对。我正在两端使用unix / linux。
答案 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会话。
如果没有发生,您的发行版中的其他地方可能会出现问题。