iPad ProからSSH Tunnelを使い、Windowsリモートデスクトップを安全に使う

というお題。

RDPをそのままの状態で外部ネットワークからアクセスするのはセキュリティ的によろしくないと思います。

必要なもの
・iPad (なんでも良いとは思うが、僕が使っているのはiPad Pro 10.5インチ)
Smart keyboard USキー配列
・アプリ Remoter Pro

Remoter Proを選択した理由は、リモートデスクトップアプリの中にsshクライアントが内蔵されているから。iOSでsshクライアント+リモートデスクトップアプリという組み合わせで動かすと、バックグラウンドに回されたsshクライアントが3分で止められてしまう仕様があり運用が大変。3分を気にするのも嫌だし、マルチタスキングでsshクライアントを止めない方法もあるけど、画面分割はリモートデスクトップ作業の妨げになって不便だからね。Remoter Proはその点楽だ。

手順:
※太字になっている項目10は結構大事なので、事前に要チェック

1.Windows10でOpenSSHサーバをインストール
2.OpenSSHサーバの各種設定を実施
3.iPadにRmoter Proをインストール
4.Remoter Proの設定(SSH)。公開鍵も作成する。
5.公開鍵をWindows10に設置
6.FWの設定
7.Remoter ProからOpenSSHサーバに接続できるかテスト

8.WindowsリモートデスクトップのFW設定を変更
9.Remoter Proの設定(Windowsリモートデスクトップ) Part1

10.インターネットルータの設定
11.Remoter Proの設定(Windowsリモートデスクトップ) Part2

12.Windows10の設定


===ここから具体的な設定手順===

1.Windows10でOpenSSHサーバをインストールする
「Windowsの設定」から「アプリと機能」「オプション機能の管理」に進み、OpenSSHサーバーをインストールする。

Cortanaの入力欄に「サービス」と入力するとサービス設定アプリ(services.msc)が立ち上がる(コントロールパネル→管理ツール→サービスと移動しても同じ)。
OpenSSH SSH Serverを見つけ出し「サービスを開始する」をクリックする。
OpenSSH SSH Serverを右クリックし、プロパティから「スタートアップの種類」を「自動」にして、Windows10起動時に自動的にOpenSSHサーバが立ち上がるようにする。

2.OpenSSHサーバの各種設定を実施
ポート番号の変更、パスワード認証を止め鍵認証のみにするのは必須かと思う。

sshd_configファイルの場所はここ。
C:\ProgramData\ssh\sshd_config


C:\Windows\System32\OpenSSH\sshd_config_default はフェイクと言ったら言い過ぎかもしれないが、このフォルダに苦労してsshd_configを書き込んでも一切効果なしなので注意! ホントひどい!!

#Port 22 → Port 適切なポート番号に変更
#PermitRootLogin prohibit-password → PermitRootlogin no
#PubkeyAuthentication yes → PubkeyAuthentication yes
#PasswordAuthentication yes → PasswordAuthentication no
#PermitEmptyPasswords no → PermitEmptyPasswords no

設定が終わったらOpenSSHサーバを再起動する。
めんどくさかったらWindows10を再起動でもいい。

3.iPadにRemoter Proをインストール
Appストアから買ってくる。インストール自体は特筆することはなし。

4.Remoter Proの設定
※iPadのフォントサイズに注意!フォントサイズがある一定以上より大きいと選択メニューの一部が隠れてしまい、「選択肢ねーよ?!」と焦ることになる。

まず公開鍵を作成しておく。

「SSH Key Manager」を選択し、RSA SSH1を作成。
公開鍵はメール経由でWindows10側に送っておく。

ホームに戻り「+」をタップすると「Add Session」が開くので、「Add Session Manually」をタップする。設定画面が開くので、必要事項を入力してゆく。英語でも臆さない。

Server Type:SSH

SSH Basic Settings:
Name:ここは好きな名前を入力して良い
SSH Hostname:ここはWindows10のIPアドレスか、ホストネームを入力
SSH Port:ここはsshd_configに記入したPort番号を記入
SSH Username:ここはWindows10のログインIDを記入
SSH Key Auth:先ほど作った鍵を選択。多分ssh0001とか表示されていると思う
SSH Passphrase:公開鍵を作成した時に決めたパスワードを入力

その他はデフォルトのままで、左上の「Save」をタップする。

5.公開鍵を作成して設置
Windows10でPowerShellを起動する。

ホームディレクトリで
> cd .ssh
で.sshフォルダがない場合は作成する。
> mkdir .ssh

適当なテキストエディタを立ち上げ、メールで送信しておいた公開鍵をコピペする。ファイル名をauthorized_keysとして保存。

6.FireWallの設定
OpenSSHサーバのポート番号を変更したので、FWのルール設定を変更する。
これはFWアプリケーションによって設定画面が違うので詳述しないが、
sshd(C:Windows\System32\OpenSSH\sshd.exe)に対して、プロトコル「TCP」、アクション「許可」、方向「内向き」、ローカルポート「(ssh_configに記述したPort番号)」を記述し、保存する。
必要に応じてFW設定の再読み込みか、Windows10を再起動する。

7.Remoter ProからOpenSSHサーバに接続できるかテスト
Remoter Proを起動し、OpenSSHサーバに接続してみる。
Windows10からの反応があれば、iPadとWindows10の接続に成功していることがわかる。

8.WindowsリモートデスクトップのFW設定を変更
今回はWindowsリモートデスクトップのPort番号(3389)の変更は行わない。
その代わりローカルからの接続しか許可しない設定に変更することでセキュリティを保つことにする。具体的には iPad→SSH Tunnel→Windows10のOpenSSHサーバ→Windowsリモートデスクトップ という接続経路をたどるので、Windowsリモートデスクトップのポート(3389)を外から直接アクセスした場合、FWが接続を遮断するので安全。

これはFWアプリケーションによって設定画面が違うので詳述しないが、
リモートデスクトップ(C:\Windows\System32\mstsc.exe)に対して、プロトコル「TCPおよびUDP」、アクション「許可」、方向「双方向」、リモートIP「127.0.0.1」を記述し、保存する。これでローカルからしかアクセスを受け付けなくなる。
必要に応じてFW設定の再読み込みか、Windows10を再起動する。

9.Remoter Proの設定(Windowsリモートデスクトップ) Part1
ホーム画面の「+」をタップすると「Add Session」が開くので、「Add Session Manually」をタップする。設定画面が開くので、必要事項を入力してゆく。英語でも臆さない。

Server Type:RDP over SSH

※RDP over SSHが選択できない場合は、iPadのフォントサイズが小さくする。

SSH Basic Settings:
Name:ここは好きな名前を入力して良い
   僕はWindowsRDP from Homeとした。
   本命は自宅の外、GIPからアクセスすることなので。

SSH Hostname:ここはWindows10のIPアドレスか、ホストネームを入力
SSH Port:ここはsshd_configに記入したPort番号を記入
SSH Username:ここはWindows10のログインIDを記入
SSH Key Auth:先ほど作った鍵を選択。多分ssh0001とか表示されていると思う
SSH Passphrase:公開鍵を作成した時に決めたパスワードを入力
RDP HostName:127.0.0.1 (FWですでにローカルからしかアクセスできないようにしているから。もしFWの設定がなければPCのIPアドレスで良い)
RDP Port:3389 (Windowsリモートデスクトップのポート番号を変えた人は適宜変更)
RDP Username:ここはWindows10のログインIDを記入
RDP Password:ここはWindows10のログインパスワードを記入
RDP Resolution:画面解像度の選択。僕は1024×768にしているがお好みで。
Performance:自宅内は「LAN」か「Wifi Network」で良いと思う。
Audio:お好みのものを選択。僕は「Adaptive Medium Quality」にしている。
Keyboard Mapping:Auto
RDP Password Manager:Not Selected
SSH Password Manager:Not Selected

これで接続できるかどうかテストしてみる。
問題がなければWindows10のデスクトップが表示されるはず。
うまく接続できない場合の多くはFWの設定が原因だ。

上記の設定が上手くいっていれば、自宅内環境でWindows RDP over SSHが利用可能になる。

10.インターネットルータの設定
これが本命で、自宅外からアクセスできる手段を手に入れたいのだ。

・グローバルIPアドレスが動的な環境の場合
→IPアドレス指定での外部からのアクセスは不可能。
 ダイナミックDNSサービスを契約するなどして対応。

・グローバルIPアドレスが固定な環境の場合
→Windows10PC用のグローバルIPアドレスを持っていない場合がほとんどだろうから、ルータの設定で、SSH用のポートを開放し、ポートマッピングで外部から特定ポートに着信したパケットをWindows10 PCのSSHポートにフォワードしてやる。

11.Remoter Proの設定(Windowsリモートデスクトップ) Part2
先に9.で作成した設定をCloneして、設定変更を最小限にすると楽だ。

Server Type:RDP over SSH
SSH Basic Settings:
Name:ここは好きな名前を入力して良い
   僕はWindowsRDP from Outsideとした。

SSH Hostname:ここは固定グローバルIPアドレスか、ダイナミックDNSサービスで決めたドメイン名
SSH Port:ここはsshd_configに記入したPort番号を記入
SSH Username:ここはWindows10のログインIDを記入
SSH Key Auth:先ほど作った鍵を選択。多分ssh0001とか表示されていると思う
SSH Passphrase:公開鍵を作成した時に決めたパスワードを入力
RDP Hostname:127.0.0.1
RDP Port:3389 (Windowsリモートデスクトップのポート番号を変えた人は適宜変更)
RDP Username:ここはWindows10のログインIDを記入
RDP Password:ここはWindows10のログインパスワードを記入
RDP Resolution:画面解像度の選択。僕は1024×768にしているがお好みで。
Performance:「Cellular Network」「WiFi Network」のいずれかになると思う。
Audio:お好みのものを選択。僕は「Adaptive Medium Quality」にしている。
Keyboard Mapping:Auto
RDP Password Manager:Not Selected
SSH Password Manager:Not Selected

これで接続できるかどうかテストしてみる。
Windows10のデスクトップ画面が現れたら、おめでとう!成功だ。

12.Windows10の設定
もともとJISキーボード使いの僕がiPadのUSキー配列Smart keyboardを買う羽目になったのには理由がある。キー配列の違いからキーボードに刻印されている記号にずれが生じ、イライラさせられたからだ。

しかも、WindowsPCを直接使う場合はJIS配列のキーボードからかな打ちする変態運用なのでなおさら。

そこでWindows10の「Windowsの設定」→「言語」→「言語を追加する」から「English(Australia)」を選択し「キーボードの追加(US QWERTY)」を追加する(言語パック、手書き、音声認識はインストールしない)。

Windows10はデスクトップ画面右下にある「通知領域」に「入力方法の切り替え」アイコンがあるので、Remoter Proからアクセスするときは「ENG 英語(オーストラリア) USキーボード」をタップすると、キー配列の通りに入力が可能になる。
Windows10 PCでJISキーボードを使っている人は、PCのキーボードを使う場合は同様に「日本語 Microsoft IME」を選択すればJISキーボードから希望通りの入力が可能になる。

Remoter Pro利用方法について紹介してくださった先人に深く感謝します。

ゆるりと製作所 さま
iPadでSSH&VNCを使ったリモート・デスクトップ環境構築
http://yururi-to.tokyo/?p=374

0 件のコメント:

コメントを投稿