I use GNU Emacs 21.2 (aka "NT-Emacs") with Cygwin on Microsoft Windows. With the emacs-lisp package TRAMP, you can use numerous methods for remote editing, similar to how ange-ftp uses ftp. Where security requires it, you can use ssh (specifically, the Cygwin version of OpenSSH), instead of ftp.
If you are familiar with Emacs, Cygwin and OpenSSH, it's not complicated at all. The only major problem is that the elisp packages tramp and cygwin-mount cannot be used together.
ssh-agent and
ssh-add, and having your public keys installed properly
at the remote site. If this is new to you, read the ssh man pages
and the local documentation file
"C:\cygwin\usr\doc\Cygwin\openssh-<version>.README"
(depending on where you installed Cygwin).
tramp/lisp/*.el files into Emacs'
site-lisp directory.
~/.emacs
file:
(require 'tramp)
(setq tramp-default-method "smx")
(setq tramp-debug-buffer t)
The last line is optional, but certainly a good idea when
trying something new like this with tramp.
PATH. For example, in my ~/.bashrc
file, I set my PATH as follows:
export PATH="/usr/local/bin:/bin:/c/gnu/emacs-21.2/bin:/c/WINDOWS/COMMAND:/c/WINDOWS"
(I have mounted C: as /c/. You can do
likewise or use /cygdrive/c/ instead.)
bash$ eval `ssh-agent`
bash$ ssh-add
[type your passphrase when prompted]
runemacs in the Cygwin bash
shell:
bash$ runemacs
C-x C-f /[user@remotehost]
Success! (Right?)
C:/cygwin/bin and other Cygwin-related
directories in Emacs' exec-path. This is necessary to find
ssh.exe and cygwin1.dll, as well as other
DLLs required by ssh.exe. Second, it allows ssh to communicate with
ssh-agent, through the SSH_AGENT_PID and
SSH_AUTH_SOCK environment variables.