Xmingを使ってみる

はじめに

Cygwin付属のXサーバであるXWinを愛用してるのだけど、ちょっと他のXサーバも触ってみようと思いXmingを導入することにした。SourceForgeXmingのページに行き、Xming-6-9-0-31-setup.exeをダウンロードしてインストールを行った。そして、デスクトップに生成されたXLaunchを実行し、質問に答えていくだけでリモートホストであるLinuxに無事接続することができた。めでたしめでたし。

ここである疑問が生まれた。リモートホストにどうやって接続することができたんだろう。

疑問点

XLaunchの設定を以下に示す。

  • Select Display Setting
  • Select how to start Xming
    • Start a program
  • Enter or choose one X client to Run Local or Run Remote

上記の設定で接続を行った場合、自分は次の順序で処理が行われていると思っている。

  1. 接続処理の開始
  2. plink.exeを使用してリモートホストSSH接続する
  3. 接続後、リモートホストでDISPLAY番号などを設定して、指定したプログラム(Xクライアント)を起動する
  4. Xクライアントの画面がSSHを通じてローカルホストのXmingに飛ばされる
  5. 結果、XmingにXクライアントの画面が表示される

この手順で一番重要なのが2の"plink.exeを使用してリモートホストSSH接続する"の部分。実はリモートホストではLinuxSSHのパスワード認証は許可しておらず、鍵を使用した認証しか許可していない。にも関わらず、XLaunchでは鍵の設定を一切行っていないのにリモートホストに接続することができた。何か原因があるはずなんだけど、分からないので気持ち悪い。そこで原因を調べてみた。

環境

環境の話を一切していなかったので、少し書いてみよう。ローカルホストからリモートホストへの接続はLAN内で行っている。

原因究明

なぜ鍵の設定を一切していないにも関わらずリモートホストに接続を行えるのかが問題なので、plink.exeの動作を調べる。コンソールからplink.exeをオプションなしで実行してみると、オプション説明が書かれたウインドが表示されたので、それを参考にplink.exeを使ってみた。結果は以下の通り。

  • ローカルホスト => リモートホスト
    • パスワード入力を求められることなく接続できる
  • ローカルホスト => ローカルホスト
    • パスワード入力を求められた後、接続できる
  • ローカルホスト => インターネット => リモートホスト
    • 接続が拒否される

この結果を見て、自分がPuTTYで使用している秘密鍵plink.exeが勝手に使用しているという予想を立てた。秘密鍵を一時的に削除してリモートホストへ接続したところ、接続が拒否された。原因は”plink.exeが鍵を勝手に使用”だった。

まだ分からないこと

なぜplink.exeは秘密鍵の場所を知ることができたのだろう。PuTTYは自分で導入し、plink.exeはXmingが導入した。なので、お互いの事は知らない・鍵の位置情報は交換されていないとは思うんだけど。案外、レジストリに記録してあったりして。とにかく、秘密鍵を勝手に探してきて使用するのは気持ちが悪いので、自分で鍵を指定できるようにしてほしい。

追記

先ほど

PuTTYは自分で導入し、plink.exeはXmingが導入した。なので、お互いの事は知らない・鍵の位置情報は交換されていないとは思うんだけど。

と書いたけど、plink.exeはPuTTYで保存されたセッションを見ていることが分かった。保存してあるセッションを削除して気がついた。