Emacs: SSH modeパッケージの使い方

SSH modeはemacsバッファ上でSSH接続を実現するパッケージです。shell modeのバッファ上でsshコマンドを実行するのと似ていますが(実際にSSH modeはshell modeをベースにしています)、SSH modeの方が便利です。

1 shell modeでsshを実行する場合との違い

shell modeはひとつのバッファしか開かないので、複数のホストへ同時に接続できません。SSH modeの場合はM-x sshで新しいバッファを開くので、複数のホストへ同時に接続できます。

SSH modeで複数のホストへ同時に接続している場合、バッファのリストは以下のようになります。

* *shell*            2091 Shell:run  /home/hiroom2/
* *ssh hostname1...  458 ssh:run     /scp:hiroom2@hostname1:/home/hiroom2/
* *ssh hostname2...  898 ssh:run     /scp:hiroom2@hostname2:/home/hiroom2/

SSH modeの場合、C-x C-fやC-x C-fを実行した場合にSSH接続先のカレントディレクトリを起点にファイルをそのまま新しいバッファで開くことができいます。

M-x dired
Dired (directory): /scp:hiroom2@<hostname>:/home/hiroom2/

shell modeの場合はssh実行時のカレントディレクトリが起点になります。

M-x dired
Dired (directory): ~/

2 SSH modeのインストール

load-pathで指定しているディレクトリにssh.elをコピーします。

$ git clone https://github.com/ieure/ssh-el
$ cp ssh-el/ssh.el ~/.elisp/

.emacsに以下を追加します。

(require 'ssh)
(add-hook 'ssh-mode-hook
          (lambda ()
            (setq ssh-directory-tracking-mode t)
            (shell-dirtrack-mode t)
            (setq dirtrackp nil)))

3 sshで接続する

M-x sshコマンドを実行してホスト名かIPアドレスを指定します。

M-x ssh
ssh arguments (hostname first): <hostname> or <ipaddr>

M-x sshを実行します。

0001_ssh.png

ホスト名を入力します。

0002_hostname.png

リモートサーバへ接続しました。

0003_connected.png

これ以降の操作はshell modeと同様です。例えばコマンドの履歴はM-p/M-nです。