【问题标题】:Text editor that can edit using sudo over ssh?可以在 ssh 上使用 sudo 进行编辑的文本编辑器?
【发布时间】:2013-12-23 03:17:43
【问题描述】:
我正在尝试编辑远程 Amazon EC2 Linux 实例上的文件。我目前只是在使用 nano,但我真的很想要一个图形文本编辑器。我有两个问题:
- 当我 ssh 进入时,我必须使用 sudo 来编辑这些服务器文件。
- 我只能使用亚马逊给我的密钥登录。例如:ssh -i Andrew.pem ec2-user@55.55.44.33
请帮忙!我并不挑剔,只是任何图形文本编辑器,因为使用 nano 是一件非常痛苦的事情。
【问题讨论】:
标签:
ssh
amazon-ec2
remote-access
sudo
remote-server
【解决方案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 笔记本,还可以像文本编辑器一样创建和编辑任何文件。
【解决方案6】:
对于远程编辑,这里有 很多 个选项:这个答案和其他答案一样,随着更多选项进入该字段,肯定会过时。
我建议从您喜欢的编辑器开始,然后从那里评估选项。如果您将 SSH 会话设置为能够直接向 root 进行身份验证(password auth 最好对 root 禁用,但如果您有 sudo,则可以安装 RSA 密钥),那么您将能够将 root 指定为上述任何一个的目标用户。
相比之下,如果你真的确实需要sudo,你仍然有选择:
【解决方案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 更先进。从终端使用命令vi 或vim。
SSH 快乐 ;)。