magのOSS備忘録

使ったOSSソフトウェアについて書いていきます。

Windows版GNU EmacsのTRAMPで秘密鍵を指定してssh接続する (plink使用)

動機

TRAMPを使ってリモートサーバのファイルを編集しようと思ったときに, SSHで公開鍵認証方式でログインしようとしたら, 色々大変だったのでやり方を残す.

複数のサーバに接続する場合, ユーザ名, ホスト名(もしくはIPアドレス), 秘密鍵ファイルを組み合わせた設定を用意しておき, それを使い分けるようにしたい. elispで設定を分けることもできそうだが, 今回はPuTTY側で複数の設定を保存しておくことにした.

実行環境

必要なもの

plinkを使ったSSH接続の手順

色々調べた結果, WindowsからSSHプロトコルでリモートサーバに接続するために, plinkを使用することにした.
plinkPuTTYに付属して配布されているため, PuTTYをインストールする.
PuTTYは下記のリンク先から, Kentaro Sato氏のカスタムビルド版PuTTY-ranvisを使用させてもらった.

PuTTY-ranvis - Ranvis software

PuTTY-ranvisのインストール

任意のフォルダに解凍する. その後, 解凍したフォルダへパスを通しておく.
今回は環境変数PATHにフォルダを追加し, コマンドプロンプトからplinkが実行できることを確認した.

PuTTYでのセッション登録

EmacsのTRAMPで接続先を選択するために, PuTTYで登録したセッション名を指定する.
そのため, 予めPuTTYでセッションを登録しておく.

設定しておくパラメータは下記の通りで, ここでホスト名, ユーザ名, 秘密鍵の組み合わせを保持する形になる.

  • セッション - 接続先の指定 - ホスト名 にホスト名かIPアドレスを入れる.
  • 接続 - データ - ログインの詳細 - 自動ログインのユーザ名 にユーザ名を入れる.
  • 接続 - SSH - PuTTYツール間で SSH 接続を共有する - 可能ならば SSH 接続を共有する にチェックを入れる.
  • 接続 - SSH - 認証 - 認証パラメータ - 認証のための秘密鍵ファイル にPuTTY形式の秘密鍵のパスを入力する.
  • セッション - 保存済みセッション一覧 に, 名称をつけて保存する. この名称をあとでEmacsで指定する.

なお, 公開鍵/秘密鍵はputtygen.exeで作れる. 作成方法やサーバへの登録はここでは割愛する.

PuTTYでのSSH接続

PuTTYを実行し, 上記で登録したセッションを開いておく.

Emacs上での設定

plinkEmacsから参照できるようになっている必要がある.
今回は環境変数PATHにplinkまでのパスを登録しているので, Emacs側では特に設定は不要.

もし上手く認識されないようであれば, *scratch*バッファで下記を評価し, パスが含まれてるかを確認する.

(getenv "PATH")

Emacs上での操作

Emacs上で下記のように入力し, リモートサーバのファイルが開ければ成功.

C-x C-f /plinkx:session-name:/directory/file

注意点は, plinkではなくplinkxを使用すること.
そして, ここでsession-nameと記載した部分には, PuTTYで登録したセッション名を指定する.

参考