SSH modeはemacsバッファ上でSSH接続を実現するパッケージです。shell modeのバッファ上でsshコマンドを実行するのと似ていますが(実際にSSH modeはshell modeをベースにしています)、SSH modeの方が便利です。
Table of Contents
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を実行します。
ホスト名を入力します。
リモートサーバへ接続しました。
これ以降の操作はshell modeと同様です。例えばコマンドの履歴はM-p/M-nです。