如何在 emacs 中使用 sudo 权限打开远程文件

emacs / sudo

emacs 有一个很有用的功能是直接透过 ssh 打开远程服务器上的文件,但是如果是系统配置的文件,恐怕就没那么方便,这里分享一下如何使用 sudo 权限来修改远程文件

1 问题

如果我们想要修改服务器上的系统配置,一般会有以下几个办法

  1. 开启 root 的远程访问,然后在 emacs 中以 root 用户远程开启,毫无疑问,这是很不安全的
  2. 自行 ssh 登陆服务器,并使用服务器自带的编辑器修改,安全有了保障,但是需要使用命令行下的编辑器,不太方便
  3. 先从服务器复制配置文件到本地,编辑后再上传到服务器,兼顾了前两者,不过还是比较繁琐

那么有没有办法可以兼顾安全和方便呢,这个场景下还是有的

2 解决

2.1 环境

2.1.1 emacs

本文中使用的 emacs 版本为 26.3,系统为 osx,提醒一下 windows 用户,由于 windows 的 emacs 启用远程访问需要额外的配置,请确认可以正常访问远程文件后,再尝试此方法

2.1.2 本地服务器

sddfdsf 我们用虚拟机在本地创建一个 CentOS 服务器,ssh 监听本地的 2222 端口

2.2 步骤

打开 emacs,使用 C-x C-f 开启打开文件的命令,输入 /ssh:localhost#2222|sudo:localhost: ,最后的冒号输入后会提示输入密码,首次连接还会提示是否相信该服务器,之后会提示再输一次密码以切换到 sudo 权限,两次输入服务器上的用户密码后,我们就可以看到并编辑服务器上的系统配置了

3 总结

虽然打开的过程有点啰嗦,但是相比于其他办法还是简单了许多,值得一提的是,本例子的当前用户名和登陆用户名是同名的,所以可以不输入用户名,如果是不同用户名,则需要按以下格式 /ssh:用户名@服务器地址#端口号|sudo:用户名@服务器地址 来输入