当我只能通过带有公钥身份验证的 SSH 访问远程主机时,如何使用本地 Emacs 编辑远程主机上的文件?Tramp 可以很好地处理正常的密码登录,但我不知道如何使用密钥对。我在两端都使用 unix/linux。
3 回答
没有相当于 的 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 中工作,而不会提示输入密码。
我不明白你的问题,因为 Tramp 与公钥认证的 SSH 连接完美配合。例如,假设您在 中设置了以下配置~/.ssh/config
:
Host remotehost
User mylogin
Port 22
Hostname remotehost.fqdn
并假设您可以ssh remotehost
在终端中正确运行,那么您可以使用 TRAMP Cx Cf 打开远程文件/remotehost:path/to/file
如果你在 Windows 上,你可以很容易地使用带有 tramp 的 plink。您必须确保 plink 二进制文件在您的路径中,并且必须将变量 (Mx customize-option) tramp-default-method 自定义为 plink ,它与 pageant 结合可以得到您想要的。
我让您阅读腻子主页如何配置选美以添加您的密钥。
也有使用配置文件名称的 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 会话。
如果没有发生,您的发行版中的其他地方可能有问题。