LoginSignup
4
1

More than 1 year has passed since last update.

Windowsクライアントを使って、クラウド上のLinuxサーバでGUIアプリを実行したい(4)

Last updated at Posted at 2019-06-04

今回は多段ssh

前回は踏み台サーバ利用編の1回目として「連続ログイン方式」を書いた。今回2回目として「多段ssh方式」について説明する。なお前回から続いた内容なので、4から始まる連続した段落番号をつけている。

4. 多段ssh方式で接続する

この方式の特徴は、Windowsクライアントから最終的な接続先サーバまで1回の操作で接続できることだ。そして最大のメリットは踏み台サーバに秘密鍵を置く必要がないことである。とくにパブリック・クラウドではありがたい。

4-1. たくさんの実現方法がある多段ssh

Windowsの場合、たとえ同じsshクライアントを使っても、多段sshにはたくさんの実現方式がある。LinuxにおけるOpenSSHとは異なり、決定的な多段sshの方法がないのが悩みどころだ。

そもそもsshクライアントがPuTTY、Tera Term、RLogin、Poderosa、Windows 10のOpenSSHとバラエティー豊かなことが、さらに複雑さを増しているのだが。

あらためて調べてみるとパスワード認証では多くの方法があるが、クラウドで一般的なssh公開鍵認証では選択肢が限られる。

そこで今回はPuTTYに含まれるPageantを使用した方法を説明する。

パスワード認証はたくさん情報があるので、そちらを見て欲しい。

4-2. Pageantとは

Pageantはssh認証のエージェントで、管理下の秘密鍵はメモリ上に保持される(Linuxのssh-agent相当)。

よく使われるケースとしては、秘密鍵に付けたパスフレーズの入力省略である。パスフレーズで保護された秘密鍵は、使うたびにパスフレーズの入力を要求される。しかしPageantを利用すると、1回パスフレーズを入力すれば、それ以降Pageantが起動している間は入力しなくてすむ。

今回はPageantが秘密鍵をメモリにロードする機能と、PuTTYの認証パラメータを転送する機能を併用して、多段sshを実現している。「連続ログイン方式」と「多段ssh方式」の違いを表したのが次の図である。

ssh-xserver05.png

4-3. 事前準備する

事前準備としてPageantに秘密鍵を設定する。なお前回説明したサーバ側のライブラリインストールなど「1-3. 前提条件」の作業は終わっているものとする。

4-3-1. Pageantに秘密鍵を設定する方法

Pageantに秘密鍵を設定するには、いくつかの方法がある。以下のいずれの方法でもよいが、今回は2の方法を説明する。

  1. Pageantのショートカットをデスクトップに作成し、そこに秘密鍵をドロップする
  2. Pageantのショートカットをデスクトップに作成し、リンク先を「pageant.exe 秘密鍵ファイル名」に変更する
  3. Pageantを起動して[Add key]で秘密鍵を追加する

4-3-2. Pageantに秘密鍵を設定する

  1. Pageantのショートカットをデスクトップに作成する。C:\Program Files\PuTTY\pageant.exeなどからデスクトップにショートカットを作成する。
  2. Pageantのショートカットを右クリックし、リストからプロパティを選択する。
    multistage-ssh10.PNG

  3. リンク先のテキストボックスにpageant.exeの後ろに1スペース開けて、秘密鍵のフルパスを記入する。このとき必ず拡張子がppkのPuTTY形式の秘密鍵を指定すること。入力が終わったら[OK]をクリックしてダイアログを終了する。
    pageant01.PNG

  4. 作成したショートカットをクリックしてPageantを起動する。エラーが出なければ正しく動作している可能性が高い。またパスフレーズで保護されている秘密鍵ではパスフレーズが要求される。

  5. Pageantが起動すると右下のタスクバーに表示される。右クリックしてポップアップを表示し、[View Keys]をクリックする。
    multistage-ssh11.PNG

  6. 正常に登録されると、以下のように秘密鍵が表示される。以上で事前準備は終了である。
    multistage-ssh13.PNG

4-4. PuTTYで多段sshを設定する

PuTTYの設定では、以下2つのSessionを作成する。これまでの第2回第3回を実行していれば1の作業は不要だ。しかし前回の手順を実施していない人もいるはずなので、復習も兼ねて説明する。

  1. PuTTYで踏み台サーバまでの接続を作成
  2. PuTTYで接続先サーバまで多段sshの接続を作成

今回想定している環境は以下のとおり。

サーバ ホスト名 パブリックIP プライベートIP
踏み台サーバ bastion あり(132.x.x.x) あり
接続先サーバ target なし 10.1.0.5

4-4-1. PuTTYで踏み台サーバまでの接続を作成

  1. PuTTYを起動する。[Host Name]には踏み台サーバのIPアドレスを指定する。インターネット経由でアクセスするときはパブリックIPを指定する。
    multistage-ssh01.PNG

  2. 左側のツリーから[Connection]-[SSH]-[Auth]を選択し、[Attempt authentication Using Pageant(Pageantを使って認証する)]にチェックを入れる。また今までは一番下の[Private key file]に秘密鍵を指定していたが、Pageantを利用しているときは省略できる。逆に設定しても構わない。
    multistage-ssh03.PNG

  3. 左側のツリーから[Connection]-[SSH]-[X11]を選択し、[Enable X11 Forwarding(X11フォワーディングを有効にする)]をチェックを入れる。
    multistage-ssh04.PNG

  4. 設定した変更を保存する。左側ツリーの[Session]に戻り設定を保存するか、タイトルバー左のPuTTYアイコンをクリックし、[Change Settings(設定の変更)]で設定を保存する。このとき保存する名前を「bastion」とする(別に何でもよい)。
    multistage-ssh05.PNG
    multistage-ssh05-1.PNG

4-4-2. PuTTYで接続先サーバまで多段sshの接続を作成

次に多段sshで接続先サーバ(ホスト名:target)への接続を作成する。

  1. 前のステップで作成した「bastion」を元に、PuTTYの新しいSessionを作成する。4-4-1.から連続で実行していないときは、既存の設定をロードする。
  2. [Connection]-[SSH]を選択し、[Remote Command]テキストボックスには踏み台サーバで実行するコマンドを入力する。今回は接続先サーバのプライベートIPを指定するので「ssh -X <接続先サーバ>」と入力する。オプションは-XCでも構わない。
    multistage-ssh06.PNG

  3. [Connection]-[SSH]-[Auth]で[Allow agent forwarding(エージェントフォワーディングを認める)]にチェックを入れる。これでPageant管理下の秘密鍵が踏み台サーバに転送できるようになる。
    multistage-ssh07.PNG

  4. 先ほどと同じ手順で、設定した変更を保存する。今回は「bastion-mh-target」という名前でセーブする(mh = Multi Hopの略)。以上ですべての設定が終わったので、次に実際に接続する。

4-5. 接続先サーバに接続する

接続先サーバに接続し、GUIアプリ画面をWindowsクライアントまで転送する。

  1. PuTTYを起動し、前のセクションで作成した「bastion-mh-target」をロードする。[Open]をクリックして接続を開始する。
  2. 表示されているプロンプトからも、接続先サーバへの接続が成功していることがわかる。
[opc@target ~]$

3.DISPLAY環境変数が設定されているか確認する。正しく設定していれば、自動的に設定されているはずである。

[opc@target ~]$ echo $DISPLAY
localhost:10.0

4.動作確認のためxeyesを起動する。デスクトップに以下の目玉が表示されれば成功だ。タイトルバーには接続先サーバのホスト名が表示されている。

[opc@target ~]$ xeyes &

mh-ssh-xeyes.PNG

5. Xサーバが適用できないケースもある

これまでの4回で以下の3方式の手順を説明した。とくに多段ssh方式は最初の設定が複雑なこともあり、十分に浸透しているとは言えないが、覚えてしまえば簡単である。

  • 踏み台なしで接続する
  • 踏み台ありで接続する(連続ログイン方式)
  • 踏み台ありで接続する(多段ssh方式)

5-1. XcXsrv/XmingなどのXサーバが有効でないケース

しかし弱点もある。次のような条件がある場合だ。

  • 外部ネットワークに接続するには、オンプレミスの外部アクセス用踏み台サーバを経由する必要がある
  • 外部アクセス用の踏み台サーバにXcXsrv/Xmingがインストールされていない
  • 外部アクセス用の踏み台サーバには管理者権限がなく、追加のプログラムをインストールできない

XcXsrv/Xmingは事前にインストールが必要なソフトウェアなので、上記環境では利用できない。
ssh-xserver03.png

そのときでも使えるのがVNCやxrdpだ。VNCクライアントには、ファイルを置くだけで使えるものがある。またxrdpは、Windows標準のリモートデスクトップクライアントを使用するのでインストール自体が不要だ。

それぞれの方法は1回目でリンクを紹介しているので、それを見てほしい。

6. まとめ

  • Xサーバを利用すると、WindowsクライアントでLinux上のGUIアプリを実行できる
  • VNCでも同じことはできるが、Xサーバには「使用するポートは最小限」「通信経路の暗号化」「サーバ側の設定が少ない」といった数多くの魅力がある
  • Xサーバは踏み台サーバ経由でも利用できる
  • 多段sshと組み合わせることで、サーバ側に秘密鍵を保存する必要がなく、クラウド環境に適している

7. 参考資料

各クラウドベンダからも以下のような資料が提供されている。最後の2つはVNCの方法である。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1