2018/10/14

Windows環境でもEmacs

Emacsが好きなんだ!!

筆者はEmacsが好きです。

目下Windows環境しか使っていなのですが、とにかく開発ではIDEを使いながら結局はEmacsでゴシゴシ書くこと多いです。

ということで、今回色々学習したことを記載してみます。

SSH経由でファイルが触りたい

EmacsにはTrampなる、ssh経由でローカルファイルと同じくファイル編集ができる機構があります。

某NTTコミュニケーションズのwebサーバは未だftpなので、Emacsからftpを使うことは多いのですが、さすがに時代遅れですよね。

時代に取り残されないため、努力努力。

[Emacs] リモートサーバで開発するときの Emacs 設定まとめにssh接続方法が以下のように書いてあるのですが、実際にやってみるとEmacsがフリーズしていしまいます。

C-x C-f /ssh:user@hostname:path/to/file
悲しいかな止まってしまったEmacs
Opening connection for xxx@xxXX using ssh...\

sshの環境不備が考えられたので、M-x sshでssh接続をしてみたところ、以下のエラーになりあえなく撃沈

Pseudo-terminal will not be allocated because stdin is not a terminal.
CreateProcessW failed error:2
ssh_askpass: posix_spawn: No such file or directory
Permission denied, please try again.
CreateProcessW failed error:2
ssh_askpass: posix_spawn: No such file or directory
Permission denied, please try again.
CreateProcessW failed error:2
ssh_askpass: posix_spawn: No such file or directory

これについてはパスワード機構に関するものとわかったので、ssh-keygenにより公開鍵方式に変更してみましたが状況変わらず。!!

  • Windows10(64bit)側でssh-keygen
  • cmdよりssh-keygenを実行、その後全てデフォでEnterキーを入力

    ssh-keygen
    Generating public/private rsa key pair.
    Enter file in which to save the key (C:\Users\XXXX/.ssh/id_rsa):
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in C:\Users\ys62.YSKAD/.ssh/id_rsa.
    Your public key has been saved in C:\Users\ys62.YSKAD/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:fS6+Lz7Jyo446IqTURWapesq+OktkeljG39CRBAngxc ys62@yskad@PC1801DELD
    The key's randomart image is:
    +---[RSA 2048]----+
    | .E++.           |
    |. .Oo            |
    | .+o             |
    |  ...    .       |
    | ..+    S . .    |
    |..+ .      o     |
    |.+o+     ....    |
    |*.*=o..o .=.     |
    |=B*+++..+o+=.    |
    +----[SHA256]-----+
    
  • 公開キーをサーバ側に追加
  • 先の操作で、「C:\Users\XXXX\.ssh\id_rsa.pub」として公開キーができているので、こちらをサーバ側に追加します。

    サーバ側のユーザフォルダに.ssh/authorized_keys ファイルとして保存します。すでにファイルがある場合は、最終行に追加してください。

    サーバ側の.ssh は chmod にて 700 パーミッションに、 authorized_keys は chmod にて 600にしておく必要があります。

  • windowsより公開鍵方式で接続テスト
  • ここまでの設定が正常に行っていれば、Windowsからssh ユーザ名@サーバ名 でパスワードなしで接続できます。

    接続できなかったら、エラーメッセージなどで環境を再チェックしてください。

  • いよいよ、Trampでsshファイル接続を!!
  • ssh公開鍵方式で接続できてしまえば、なにかが変わる。

    可能性を信じていたのですが、残念ながら、Emacsがフリーズします。

    悲しいかな止まってしまったEmacs
    Opening connection for xxx@xxXX using ssh...\

やっぱりWindows環境でのEmacsには乗り越えなきゃならんものが有るようです。

やはりWindows環境でのEmacsには対応していなかった

もっと早く見つければよかったのですが、Emacs Tramp でリモート上のファイルを直接編集する方法|Windowsにも対応に制限事項と対処が書かれていました。

直接sshは使えないので、plinkを使用しての接続となるとのこと。

書かれている通り、次のようにすれば、全く問題なく動作します。

C-x C-f /plink:user@hostname:path/to/file

うーん。Windows上で、Emacsは苦労させれますが、この快適さはやめられません。

これからも頑張っていきましょう!!