可以在 ssh 上使用 sudo 进行编辑的文本编辑器?

Posted

技术标签:

【中文标题】可以在 ssh 上使用 sudo 进行编辑的文本编辑器?【英文标题】:Text editor that can edit using sudo over ssh? 【发布时间】:2013-12-23 03:17:43 【问题描述】:

我正在尝试编辑远程 Amazon EC2 Linux 实例上的文件。我目前只是在使用 nano,但我真的很想要一个图形文本编辑器。我有两个问题:

    当我 ssh 进入时,我必须使用 sudo 来编辑这些服务器文件。 我只能使用亚马逊给我的密钥登录。例如:ssh -i Andrew.pem ec2-user@55.55.44.33

请帮忙!我并不挑剔,只是任何图形文本编辑器,因为使用 nano 是一件非常痛苦的事情。

【问题讨论】:

见***.com/questions/824327/… 因为@bluefeet 不允许我在这里发帖,请参阅superuser.com/a/892882/25609 以获得答案 emacs 和 vim 都有这方面的插件。参见例如 gnu.org/software/emacs/manual/html_node/emacs/Remote-Files.html 和 Emacs Transparent, Remote (file) Access, Multiple Protocol 模块。 ...或者对于 vim,the netrw module 满足了这个需求。使用 gvim 版本,您就有了图形编辑器。 【参考方案1】:

为了帮助其他人解决同样的问题,我建议使用 jEdit。功能非常强大,插件环境、语言解析等非常丰富。

http://www.jedit.org

它使用 sshConsole 插件“始终”支持 sftp 读取和写入文件。

我现在使用 AWS 提供的密钥对在我的 AWS EC2 实例上使用它。

最后,在“生产”环境中编辑 root 拥有的文件并不是一个好主意。

您的开发人员是否在 AWS 用户的主文件夹中工作,以便您可以完全控制源文件。然后使用指向实际服务器文件树的符号链接,这样您就可以将其提供给自己进行测试。 nginx 和 apache 中有很多控件可以限制谁可以查看您的开发站点。

编辑/更新:

Notepad++ 的 NppFtp 插件提供对 AWS 的 sftp 访问。我刚刚使用他们为我登录 AWS 提供的 .pem 文件对其进行了测试。

【讨论】:

【参考方案2】:

帮助任何只需要快速命令行文本编辑器的人:

你可以使用vi

vi file-name.txt

纳米

nano file-name.txt

如果编辑文件,可以选择使用 sudo,例如:

sudo nano file-name.txt

【讨论】:

【参考方案3】:

非常想要一个图形文本编辑器

您不能拥有图形编辑器,您需要使用任何编辑器,如您所说的 nano 或 vim,emacs。当您必须以 root 作为所有者编辑配置文件时,将需要 Sudo。

【讨论】:

【参考方案4】:

我为 AWS 上基于 GUI 的文本编辑器发现了一个奇怪的解决方法,我使用了 Jupyter Notebook。如果您的实例上安装了 Anaconda,请按照以下步骤操作

使用ssh -i <location of your private key> <username>@<public DNS> SSH 到您的实例上 使用 jupyter notebook --no-browser --port=8888 在您的实例上启动 jupyter notebook 打开一个新的终端窗口并使用ssh -i <location of your private key> -L 8212:localhost:8888 <username>@<public DNS> SSH 到您的 jupyter notebook 现在你可以在localhost:8212打开jupyter notebook

使用 jupyter notebook 环境,您不仅可以启动和运行 Ipython 笔记本,还可以像文本编辑器一样创建和编辑任何文件。

【讨论】:

【参考方案5】:

亚马逊现在收购了 Cloud9,这是一个基于浏览器的 IDE,可以编辑您的 EC2。

https://aws.amazon.com/cloud9/

【讨论】:

【参考方案6】:

对于远程编辑,这里有 很多 个选项:这个答案和其他答案一样,随着更多选项进入该字段,肯定会过时。

对于vimnetrw module 满足了这一需求,并且默认随编辑器一起提供。 对于emacs,可以使用TRAMP。 有关 ATOM 编辑器,请参阅 the remote-files plugin。 对于 IntelliJ,商业版支持editing files on remote hosts。 对于 Eclipse,请参阅Target Management project 中的 Remote System Explorer。

我建议从您喜欢的编辑器开始,然后从那里评估选项。如果您将 SSH 会话设置为能够直接向 root 进行身份验证(password auth 最好对 root 禁用,但如果您有 sudo,则可以安装 RSA 密钥),那么您将能够将 root 指定为上述任何一个的目标用户。


相比之下,如果你真的确实需要sudo,你仍然有选择:

请参阅 Emacs wiki 上的 Using tramp to open files sudoed to root。新版本还支持 ssh+sudo 传输,这意味着此 wiki 条目可能已经过时。

【讨论】:

【参考方案7】:

您可以使用 nano、vim、vi 或许多其他工具。但是,如果您想使用图形文本编辑器进行编辑,则必须创建 SFTP,因为 Amazon 不支持 FTP。一种方法是使用 filezilla 上传文件。这是一个关于使用 filezilla https://www.youtube.com/watch?v=VawBMj29g0o 的视频,不过我建议使用 SSH。它的快速和简单在这里是一个视频https://www.youtube.com/watch?v=O2-3HoRjBH4

【讨论】:

【参考方案8】:

为此,我建议以下之一:

    学习和使用 emacs;就文本模式编辑器而言,它非常强大。

    在服务器上安装您最喜欢的图形编辑器并使用 X 转发,“ssh -X server.com”。这将允许您远程启动编辑器,但在本地显示。

    我认为最优雅的方式是使用 sshfs (https://github.com/libfuse/sshfs) 在本地挂载远程目录,这样您就可以使用自己喜欢的文本编辑器直接处理文件。

【讨论】:

【参考方案9】:

只需修改本地计算机上的相应文件并将文件 scp 到远程计算机。

scp <local_machine_path_to_file> remoteUser@remoteHostName:<filePath>

【讨论】:

【参考方案10】:

我使用 SFTP Net Drive SFTP,它允许您在本地计算机上创建一个虚拟驱动器,该驱动器将映射可通过 SFTP 协议访问的远程文件系统。创建地图后,您可以使用您喜欢的编辑器。

【讨论】:

【参考方案11】:
ssh -X user@server. 

您必须为转发进行适当的设置。

【讨论】:

【参考方案12】:

Sudo 用于该特定命令的 root 权限。您将需要使用 root 权限来编辑系统文件。即使在本地机器上。如果您不喜欢每次都输入sudo,可以输入sudo -s。您将更改为 root 用户,它会在终端中显示您,即 root@ip.... $ 符号也将更改为 #。老实说,我更喜欢不使用 root,因为使用 root 权限更容易犯不可挽回的错误。我犯了一些错误,我是根据经验说话......

就您问题的第二部分而言,您可以配置各种文本编辑器以 sftp 进入您的实例,例如 sublime。

每次使用终端 ssh 时,您都必须使用 .pem 密钥文件。这是因为 AWS 非常重视安全性。您可以将密钥文件放在主目录中。这样您就不必每次打开终端时都更改目录。

您还可以编辑文件的本地副本,然后使用 FileZilla 进行传输。 Setting up FileZilla 使用您的 EC2 实例非常简单。您可以尝试一下 vim,因为它会为您的代码着色并且比 nano 更先进。从终端使用命令vivim

SSH 快乐 ;)。

【讨论】:

以上是关于可以在 ssh 上使用 sudo 进行编辑的文本编辑器?的主要内容,如果未能解决你的问题,请参考以下文章

CentOS6.5 ssh远程root登录

如何通过 sudo 使用输出重定向? [复制]

如何通过 SSH 编辑文件?

如何使用ssh远程编辑定时任务crontab?

怎样用Beyond Compare进行代码的合并与对比

当使用“sudo su”时,jenkins在ssh上执行shell