NTEmacs + Tramp Mode on Windows 7

emacs for gnupack のアーカイブ展開のみで使用できる NTEmacs (GNU Emacs 23.4.1) では tramp もデフォルトで使用することができる。しかし、Cygwin の OpenSSH との組み合わせではうまく動作しなかった。そこで、PuTTY に付属の plink を使用するように切り替えたところ、うまく動作を確認した。以下はその時の作業記録。

はじめに今回動作を確認したバージョンをコピーしておく。

OS: Windows 7, Service Pack 1
NTEmacs: GNU Emacs 23.4.1 (i386-mingw-nt6.1.7601) of 2012-03-24 on VMWIN2
tramp: 2.1.21-pre
PuTTY: 0.62
plink: 0.62

さて、公開鍵認証を用いて SSH で接続している場合、クライアント側は秘密鍵が必要となるが、ssh-keygen でこの鍵を作成する際にパスフレーズを設定することもできる。しかし、以下では SSH の接続に公開鍵を用いているが、その際パスフレーズはひとまず設定していない。

まずは、OpenSSH で作成した鍵を PuTTY で使えるようにインポートしておく。PuTTY をインストールしたディレクトリ (C:Program Files (x86)PuTTY) にある puttygen.exe を起動し「Load」から ~/.ssh/id_rsa 等の鍵を指定し「Save private key」で PuTTY 用の秘密鍵 id_rsa.ppk を生成しておく (以下では ~/.ssh/id_rsa.ppk で保存したとする。詳しくは→ PuTTYでssh2プロトコルを使ってssh接続)。

また、plink のシンボリック・リンクを Mklink コマンドでパスの通ったところ (/usr/local/bin) に作成しておいた。

$ which plink
/usr/local/bin/plink

まずは、plink を使って接続できるか確認しておく。

$ plink -l USERNAME -P 10022 -i ~/.ssh/id_rsa.ppk -ssh yoursite.com

Emacs の設定ファイル (~/.emacs.d/init.el) には以下のように書いた。

(require 'tramp)
(setq tramp-default-method "wssh")
(modify-coding-system-alist 'process "plink" 'utf-8-unix)
(setq tramp-completion-without-shell-p t)
(setq tramp-shell-prompt-pattern "^[ $]+")
;; add "wssh" to tramp-methods
(add-to-list 'tramp-methods
             `("wssh"
               (tramp-login-program        "plink")
               (tramp-login-args           (("-l" "%u") ("-P" "%p")
                                            ("-i" ,(expand-file-name "~/.ssh/id_rsa.ppk")) ; 鍵の場所
                                            ("-ssh") ("%h")))
               (tramp-remote-sh            "/bin/sh")
               (tramp-copy-program         nil)
               (tramp-copy-args            nil)
               (tramp-copy-keep-date       nil)
               (tramp-password-end-of-line "xy")
               (tramp-default-port         22)))

この設定を評価して、NTEmacs の mini buffer で

/USERNAME@yoursite.com#10022:/path/to/somewhere

で接続を確認した。「#10022」のところは設定しているポート番号に変更する。何も書かない場合、デフォルトの 22 番で接続される。

https://skalldan.files.wordpress.com/2012/05/wpid-ntemacs_tramp.png

以下の設定で (見かけ上) ルートで接続することもできるようだ。

(add-to-list 'tramp-default-proxies-alist
                '("yoursite.com" "`root'" "/wssh:USERNAME@%h#10022:"))

同じく mini buffer で、

/sudo:yoursite.com:/path/to/somewhere

と入力すると、サーバーのルートのパスワードが要求されるので入力する。

https://skalldan.files.wordpress.com/2012/05/wpid-ntemacs_tramp_root.png

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s