db-user
db-user

Reputation: 243

Text editor that can edit using sudo over ssh?

I'm trying to edit files on a remote Amazon EC2 Linux instance. I'm currently just sshing in and using nano, but would really like a graphical text editor. I have two problems:

  1. I have to use sudo to edit these server files when I ssh in.
  2. I can only login with the key Amazon gave me. Ex: ssh -i Andrew.pem [email protected]

Please help! I'm not picky, just any graphical text editor since using nano is a huge pain.

Upvotes: 15

Views: 49286

Answers (15)

kughanr
kughanr

Reputation: 11

I find that VSCode with the Remote - SSH extension works well, I had to also add the extension Save as Root in Remote - SSH for saving after editing the files.

Instructions on VSCode Docs

Upvotes: 1

mc0e
mc0e

Reputation: 2820

This is now an old question, and I'm surprised no-one has suggested this already:

If you can log in as root (if it's your instance, so you can make it so), then you can mount a part of the remote file system in a variety of ways, and you can then use your preferred graphical editor on your local system.

sshfs is one such option:

sshfs root@host:[dir] mountpoint [options]

Be careful with this though. You can make very big mistakes easily. I wouldn't use a graphical file manager with this, as it's to easy to make a mistaken mouse move and move a whole directory or something like that. I'd also hesitate to mount a directory which is likely to have active changes going on remotely.

In a similar vein, and with similar caveats about graphical file managers, many linux file managers (e.g. nemo, which I use) can open a remote directory by giving it a path like sftp://[email protected]/dir/ect/ory, which performs a file mount, allowing local apps to edit the remote files.

Some file editors (e.g. the Gnome text editor) will allow you to paste an URL like sftp://[email protected]/dir/ect/ory into the file open dialog to access files in your remote folder as root.

I use a variety of approaches. I commonly prefer to use something like rsync or git to periodically sync files, as it gives a lot of added safety, but mounting a directory has advantages. It often gives me a really tight testing cycle for seeing the effects of changes, and it allows me to use command line editing techniques to do things like search and replace across whole directory structures. I can do those things remotely also, but for example I can mount servers from multiple hosts onto my local system and do operations between them.

Upvotes: 0

horeca2
horeca2

Reputation: 21

Today I found two products that can use sudo, they are MobaXterm (free version) and SmarTTY

MobaXterm has a button in the file browser that enables sudo mode. You can view, create and edit files as a sudo user. Use this switch when necessary. Unfortunately, this only works through the SCP protocol.

SmartTTY works differently. When you try to save a file that requires sudo, SmarTTY throws an error and immediately suggests trying to save the file with sudo

Of the two products, I recommend MobaXterm.

enter image description here

Upvotes: 1

guitarpicva
guitarpicva

Reputation: 441

To assist others with this same question, I would suggest jEdit. It is very capable, and it has a very rich plugin environment, language parsing, etc.

http://www.jedit.org

It has "always" supported sftp read and write of files with the sshConsole plugin.

I use it now on my AWS EC2 instance with the key pair supplied by AWS.

Lastly, it is not a good idea to edit files owned by root in the "production" environment.

Do your dev work in the AWS user's home folder so that you have full control of the source files. Then use a symlink to the actual server's file tree so you can serve it to yourself for testing. There are lots of controls in nginx and apache to limit who can view your dev site.

EDIT/UPDATE:

The NppFtp plugin to Notepad++ profides sftp access to AWS. I just tested it with the .pem file that they provided for my login at AWS.

Upvotes: 0

Andrew
Andrew

Reputation: 20091

To help anyone that just need a quick command line text editor:

you can use vi:

vi file-name.txt

or nano:

nano file-name.txt

optionally use sudo if editing the file, eg:

sudo nano file-name.txt

Upvotes: 4

Bijendra
Bijendra

Reputation: 10035

would really like a graphical text editor

You cannot have a graphic editor, you need to use any editors like nano as you said or vim,emacs. Sudo would be required when you have to edit configuration files with root as owner.

Upvotes: 0

Soumik Rakshit
Soumik Rakshit

Reputation: 889

I found a weird workaround for a GUI based text editor on AWS, I used Jupyter Notebook. If you have Anaconda installed on you instance, you follow the following steps

  • ssh onto your instance using ssh -i <location of your private key> <username>@<public DNS>
  • Start jupyter notebook on your instance using jupyter notebook --no-browser --port=8888
  • Open a new terminal window and ssh onto your jupyter notebook using ssh -i <location of your private key> -L 8212:localhost:8888 <username>@<public DNS>
  • Now you can open jupyter notebook at localhost:8212

Using the jupyter notebook environment, you can not only launch and run Ipython notebooks but also create and edit any files like a text editor.

Upvotes: 0

the_answer_is_xyz
the_answer_is_xyz

Reputation: 521

amazon now acquire Cloud9, which is a browser-based IDE that can edit your EC2.

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

Upvotes: 1

Charles Duffy
Charles Duffy

Reputation: 295472

For remote editing, there are lots of options here: This answer, like any other, is sure to become outdated as more options enter the field.

I'd suggest starting with the editor you prefer and evaluating options from there. If you set up your SSH session to be able to authenticate directly to root (password auth is best disabled for root, but if you have sudo you can install RSA keys), then you'll be able to specify root as a target user for any of the above.


By contrast, if you really do need sudo, you still have options:

Upvotes: 4

user2970934
user2970934

Reputation: 79

You can use nano, vim, vi or many others. However if you want to edit with a graphical text editor you will have to create SFTP since Amazon does not support FTP. One way is to use filezilla to upload your files. Here is a video on using filezilla https://www.youtube.com/watch?v=VawBMj29g0o I suggest SSH though. Its fast and easy here is a video on that https://www.youtube.com/watch?v=O2-3HoRjBH4

Upvotes: 0

Lee Marshall
Lee Marshall

Reputation: 302

For this, i'd suggest one of:

  1. Learn and use emacs; it's quite powerful as far as textmode editors go.

  2. Install your favourite graphical editor on the server and use X forwarding, 'ssh -X server.com'. This will allow you to launch the editor remotely, but have it display locally.

  3. Most elegant in my opinion, use sshfs (https://github.com/libfuse/sshfs) to mount the remote directory locally, so you can work on the files directly using your favourite text editor.

Upvotes: -1

Ryhan
Ryhan

Reputation: 1885

Just modify the appropriate files on your local machine and scp the file into the remote machine.

scp <local_machine_path_to_file> remoteUser@remoteHostName:<filePath>

Upvotes: 2

Rquinter
Rquinter

Reputation: 1

I use SFTP Net Drive SFTP, which let you create a virtual drive on your local computer that will map the remote file system accessible via SFTP protocol. After the map is created, you can use the editor of your preference.

Upvotes: 0

curiousMonkey
curiousMonkey

Reputation: 717

ssh -X user@server. 

You have to make appropriate setting for forwarding.

Upvotes: 0

maahd
maahd

Reputation: 712

Sudo is for root privileges for that particular command. You will need to use root privileges to edit system files. Even on a local machine. If you don't like typing sudo every time, you can type sudo -s. You will change to root user and it will show you in terminal i.e. root@ip.... The $ sign will also change to #. Honestly, I prefer not going root, because it is easier to make irreversible mistakes with root privileges. I've made some mistakes and I'm talking from experience...

As far as the second part of your question goes, you can configure various text editors to sftp into your instance such as sublime.

You will have to use the .pem key file every time you ssh using terminal. This is because AWS takes security very seriously. You can put the key file in your home directory. That way you don't have to change directories every time you open up terminal.

You can also edit a local copy of files and then use FileZilla to transfer. Setting up FileZilla to work with your EC2 instance is straightforward. You can give vim a try since it colors your code and is more advanced than nano. Use the command vi or vim from terminal.

Happy SSH'ing ;).

Upvotes: 0

Related Questions