Emacs + tramp + shell mode + plink = cool remote editing and shell
Sometimes you have to work on remote Linux systems from a Windows computer, and under a lot of security restrictions. Well, as long as you can install GNU Emacs for Windows and the Putty tools, you can actually work quite comfortably.
First, Emacs has a very useful extension called tramp (transparent remote file access) that offers remote editing through combinations of scp, ssh and others. On Windows, it can use plink. You can work on remote files by prefixing their names using the same Putty session names you use to open terminals on remote systems.
For instance, using the setup below, if you have created a "user@host" Putty session name, use this name for your remote home directory in Emacs: "/plinkx:user@host:".
Opening a shell while you're editing remote files will get you in a remote shell session, with completion and directory tracking, which is reasonably comfortable :-)
NTEmacs is a port of GNU Emacs on Windows, currently at version 23.0.0, it comes with tramp and works fine with the following setup:
(require 'tramp)
(setq tramp-default-method "plinkx")
:;; Use ssh mode with plink
(setq ssh-program "plink")
;;; We use Putty session names of the form user@host
(setq ssh-explicit-args '("-load"))
(defun shell-host ()
(interactive)
(make-local-variable 'default-directory)
(cd-absolute "/plinkx:user@host:~")
(shell))
(setq explicit-shell-file-name "bash")