Difference between revisions of "TRAMP"

From WikEmacs
Jump to navigation Jump to search
m (completed infobox information)
m
Line 10: Line 10:
 
Some of the things that TRAMP can do include:
 
Some of the things that TRAMP can do include:
  
* Editing files on a remote development server over SSH (e.g. <tt>/ssh:remote-user@remote.box:/path/to/my/file</tt>)
+
* Editing files on a remote development server over SSH (e.g. {{Filename|/ssh:remote-user@remote.box:/path/to/my/file}})
* Editing files on your local machine as root via sudo (e.g. <tt>/sudo::/etc/some/config/file</tt>)
+
* Editing files on your local machine as root via sudo (e.g. {{Filename|/sudo::/etc/some/config/file}})
 
* Editing files on a remote server as root via sudo over an SSH connection from another remote machine that exists within a DMZ (requires some configuration, see below)
 
* Editing files on a remote server as root via sudo over an SSH connection from another remote machine that exists within a DMZ (requires some configuration, see below)
  
Line 20: Line 20:
 
To set up multiple hop connections you will need to do a little bit of configuration.
 
To set up multiple hop connections you will need to do a little bit of configuration.
  
As an example, let's assume that you want to edit a file located at <tt>/etc/httpd/conf/httpd.conf</tt> as root on a remote server at dev.example.com. You have a regular user account <tt>chris</tt> on the development sever, but you need to use sudo to gain root access before editing the file.
+
As an example, let's assume that you want to edit a file located at {{Filename|/etc/httpd/conf/httpd.conf}} as root on a remote server at dev.example.com. You have a regular user account <tt>chris</tt> on the development sever, but you need to use sudo to gain root access before editing the file.
  
 
Put the following into your configuration files:
 
Put the following into your configuration files:
Line 38: Line 38:
 
After this is evaluated, Emacs knows that the hostname dev.example.com must be accessed over SSH by a user called chris.
 
After this is evaluated, Emacs knows that the hostname dev.example.com must be accessed over SSH by a user called chris.
  
If you now try to find <tt>/sudo:dev.example.com:/etc/httpd/conf/httpd.conf</tt> Emacs will automatically create the SSH connection first, prompting you for your password if necessary. Then it will prompt you for your sudo password. Once this is all done you will be able to modify the buffer as necessary. Saving the buffer will do what you expect: it will update the file on the remote server.
+
If you now try to find {{Filename|/sudo:dev.example.com:/etc/httpd/conf/httpd.conf}} Emacs will automatically create the SSH connection first, prompting you for your password if necessary. Then it will prompt you for your sudo password. Once this is all done you will be able to modify the buffer as necessary. Saving the buffer will do what you expect: it will update the file on the remote server.
  
 
It is also possible to configure partial domains, for instance in case you need an SSH connection before modifying anything on <tt>*.example.com</tt>.
 
It is also possible to configure partial domains, for instance in case you need an SSH connection before modifying anything on <tt>*.example.com</tt>.

Revision as of 17:59, 2 April 2012

TRAMP
Description Edit files on remote systems
Author name of author
Maintainer name of maintainer
Source http://savannah.gnu.org/projects/tramp
Part of Emacs yes, since Emacs 22

Emacs' TRAMP feature (Transparent Remote file Access, Multiple Protocol) is an extremely powerful tool for editing files that exist on remote systems, or require access using a different user account from your main Emacs session, or both.

Some of the things that TRAMP can do include:

  • Editing files on a remote development server over SSH (e.g. /ssh:remote-user@remote.box:/path/to/my/file)
  • Editing files on your local machine as root via sudo (e.g. /sudo::/etc/some/config/file)
  • Editing files on a remote server as root via sudo over an SSH connection from another remote machine that exists within a DMZ (requires some configuration, see below)

TRAMP is included with Emacs and described in the manual.

Multiple hops

To set up multiple hop connections you will need to do a little bit of configuration.

As an example, let's assume that you want to edit a file located at /etc/httpd/conf/httpd.conf as root on a remote server at dev.example.com. You have a regular user account chris on the development sever, but you need to use sudo to gain root access before editing the file.

Put the following into your configuration files:

;; Guard to ensure that TRAMP is available
(if (locate-library "tramp")
    (eval-after-load "tramp"

      ;; The actual TRAMP configuration
      '(add-to-list 'tramp-default-proxies-alist
                    '("\\`dev\\.example\\.com\\'"
                      "\\`chris\\'"
                      "/ssh:%h:"))))

After this is evaluated, Emacs knows that the hostname dev.example.com must be accessed over SSH by a user called chris.

If you now try to find /sudo:dev.example.com:/etc/httpd/conf/httpd.conf Emacs will automatically create the SSH connection first, prompting you for your password if necessary. Then it will prompt you for your sudo password. Once this is all done you will be able to modify the buffer as necessary. Saving the buffer will do what you expect: it will update the file on the remote server.

It is also possible to configure partial domains, for instance in case you need an SSH connection before modifying anything on *.example.com.

Hops can be chained, making this feature extremely powerful.

A note for Windows users

TRAMP uses programs that are usually included with GNU/Linux systems under the hood. These are not usually available on a Windows system.

The plink method built into TRAMP can be used as a mostly drop-in replacement for SSH connections. It uses plink.exe from the PuTTY suite of tools, which must be installed separately.