Xmingを使ってみる
はじめに
Cygwin付属のXサーバであるXWinを愛用してるのだけど、ちょっと他のXサーバも触ってみようと思いXmingを導入することにした。SourceForgeのXmingのページに行き、Xming-6-9-0-31-setup.exeをダウンロードしてインストールを行った。そして、デスクトップに生成されたXLaunchを実行し、質問に答えていくだけでリモートホストであるLinuxに無事接続することができた。めでたしめでたし。
ここである疑問が生まれた。リモートホストにどうやって接続することができたんだろう。
疑問点
XLaunchの設定を以下に示す。
- Select Display Setting
- Multiple windows
- Select how to start Xming
- Start a program
- Enter or choose one X client to Run Local or Run Remote
上記の設定で接続を行った場合、自分は次の順序で処理が行われていると思っている。
- 接続処理の開始
- plink.exeを使用してリモートホストにSSH接続する
- 接続後、リモートホストでDISPLAY番号などを設定して、指定したプログラム(Xクライアント)を起動する
- Xクライアントの画面がSSHを通じてローカルホストのXmingに飛ばされる
- 結果、XmingにXクライアントの画面が表示される
この手順で一番重要なのが2の"plink.exeを使用してリモートホストにSSH接続する"の部分。実はリモートホストではLinuxでSSHのパスワード認証は許可しておらず、鍵を使用した認証しか許可していない。にも関わらず、XLaunchでは鍵の設定を一切行っていないのにリモートホストに接続することができた。何か原因があるはずなんだけど、分からないので気持ち悪い。そこで原因を調べてみた。
環境
環境の話を一切していなかったので、少し書いてみよう。ローカルホストからリモートホストへの接続はLAN内で行っている。
- ローカルホスト
- リモートホスト
- Linux CentOS
- ブロードバンドルータのポート転送を使用し、インターネットからSSH接続できるようにしている
- なので、鍵認証を使用
原因究明
なぜ鍵の設定を一切していないにも関わらずリモートホストに接続を行えるのかが問題なので、plink.exeの動作を調べる。コンソールからplink.exeをオプションなしで実行してみると、オプション説明が書かれたウインドが表示されたので、それを参考にplink.exeを使ってみた。結果は以下の通り。
- ローカルホスト => リモートホスト
- パスワード入力を求められることなく接続できる
- ローカルホスト => ローカルホスト
- パスワード入力を求められた後、接続できる
- ローカルホスト => インターネット => リモートホスト
- 接続が拒否される
この結果を見て、自分がPuTTYで使用している秘密鍵をplink.exeが勝手に使用しているという予想を立てた。秘密鍵を一時的に削除してリモートホストへ接続したところ、接続が拒否された。原因は”plink.exeが鍵を勝手に使用”だった。