PCやスマートフォンなどのSSHクライアントから、自宅のSSHサーバ(Windows、Linux)へアクセスし、その後VNCでリモートデスクトップ接続する方法

PCやスマートフォンなどのSSHクライアントから、自宅のSSHサーバ(Windows、Linux)へアクセスし、その後VNCでリモートデスクトップ接続する方法です。

 

 

自宅のPCがLinux1台のみの場合やVPSのLinuxに対して、SSHポート転送とVNCリモート接続を行う場合

以下のページを参照して下さい。

 

ServersMan@VPS(CentOS7) VNCでリモートデスクトップとWindows/AndroidでSSHポートフォワード方法

 

 

自宅のPCがWindows1台のみで、そのWindowsへ外出先からSSH接続やSFTPによるファイル送受信を行いたい場合

VNCによるリモート接続は必要なく、SSH接続やファイル送受信が出来れば
良いというケースです。
以下のページを参照して下さい。

 

PCやスマートフォンなどのSSHクライアントから、自宅のSSHサーバ(Windows、Linux)へアクセスする方法

 

 

自宅のPCがWindows1台のみで、そのWindowsへ外出先からSSH接続しVNCでのリモート接続も行いたい場合

本ページを参照して下さい。
自宅のブロードバンドルーターにリモート機能(PPTPやIPsec)が無く、
PCはWindows1台のみ、という方にはこの方法が当てはまるかなと思います。
またPPTPでは少し安全面で懸念が有りますね。

 

概要としては、WindowsのVMWarePlayer上でCentOS(SSHサーバ)を
起動します。次にWindowsでVNCサーバを起動します。
以上でほぼ設定完了です。

 

※この方法もそうですが、100%安全なリモート方法と言うのは有りません。
セキュリティやリスクに関しては本サイトよりも詳しいインターネットサイトや
本などで事前に把握してから、設定の要否を検討してみて下さい。
レンタルサーバやVPSへのアクセスも現在は、今回の方法と同様に
SSHでのアクセスが主流であるため、安全性もだいたい同様かな
とは思います。

 

さらに安全性を考えるとルータのシスログやWindowsでのパケット警察などの
ログを参照してSSHアクセスが有ったことを通知するような仕組みを作るのが
良いかと思います。

 

また、Windows標準機能のリモートデスクトップ接続(tcp/3389)で、
WAN側から直接暗号化無しでのリモート接続は行わないようにしましょう。

 

Windows1台のみの構成とする意味は、SSHサーバのためだけに物理的に
CentOSを起動しておくよりは楽かなと思いWindows1台だけの構成にしました。

 

この場合のトラフィック(通信パケット)の流れ方は、以下です。

 

外出先のPCでSSHポート転送後VNCビューアで接続
→→tcp/22のSSHのトラフィック(SSHトンネルの中でVNCパケットが流れる)
→→自宅のブロードバンドルーターでポートマッピング(ルータ宛tcp/22をSSHサーバ宛tcp/22へ)
→→SSHパケットの終端であるWindows上のVMWareのCentOS(SSHサーバ)
→→tcp/5900のVNCのトラフィック
→→WindowsのVNCサーバに接続

そのため、自宅のブロードバンドルーターではSSH用ポート(初期設定ではtcp/22、
ポート番号は変更を強く勧めます。)のみ空いていれば良いです。

 

動作としては、

外出先のPCからの送信パケットが
自宅のブロードバンドルーターを通り
物理的に有るCentOS(SSHサーバ)を通り
物理的に有るWindows(VNCサーバ)へリモート接続

と変わりは無いですね。CentOSが物理的か仮想的かの違いだけです。

 

※もしかしたらWindows標準のリモートデスクトップ機能でも、
複数のセッションが張れるもの(Windows Serverや、またはWindows
Serverのリモートデスクトップ機能や旧ターミナルサーバ機能)
であれば、SSHポート転送後にVNCで無くてもWindows標準の
リモートデスクトップ機能でいけそうかなと少し思いました。

 

 

Windows1台構成でリモート接続を行った時の画面です。
リモートしに行く側の接続元Windowsで、まずTeraTermでWindowsの
VMWare上のCentOSへSSH接続且つSSHポート転送してから、
WindowsのVNCサーバへリモート接続しています。

 

 

 

 

本ページの目次

 

前提として、プロバイダから自宅のモデムやルータに割り振られるIPアドレスが
グローバルIPであることが必要です。プライベートIPアドレスの場合、SSH接続
可否は検証していませんが、以前に設定方法を記載したことのあるマイIPで固定
グローバルIPアドレスを取得でいけるかなと思われます。

 

※本ページではSSHでの使用ポートを初期設定から変えずに
tcp/22で設定を行いますが、tcp/22以外でSSHを使用することを強く
勧めます。tcp/32122など、ポートスキャンされにくいものが良いかなと思います。

 

 

自宅のWindowsでVMWareを起動しCentOS(SSHサーバ)を起動

 

単にSSHサーバを作成するだけですのでCentOSで無くてもWindowsServer体験版や
その他OSでも良いですね。Windows用のSSHサーバソフトは、Windows版OpenSSHfreeSSHdが有ります。

 

CentOSは無料で、且つSSHサーバも最初から起動して
いるし、設定も楽というのが、今回CentOSを選んだ理由です。

 

また、SSHのパスワード認証とDenyHostsでのセキュリティ向上、または公開鍵認証
の設定方法の知名度の高さからもCentOSが適しているかと思いました。

 

今回とは別の話ですが、もしも自宅にCentOS1台だけの場合、そのCentOSを
SSHサーバ&VNCサーバに設定して完了です。(本ページの1番上のリンク先の
設定方法です。)
しかしながらWindowsの場合は、深くは検証していませんがSSHサーバ&
VNCサーバを1台のWindows(1つのOS)で担う構成では無理なのかなと
思います。上述の通り複数のセッション接続ができるWindowsServerで
あれば出来る可能性も有るかなと思います。

 

 

では、本項の設定方法を記載していきます。
まずWindowsにVMWarePlayerをインストールし、VMWarePlayer上で
CentOS7をインストールします。

 

CentOSのインストール方法や基本設定、SSHサーバやファイアウォールの
設定方法は以下のカテゴリに記載しましたので参考にしてみて下さい。

 

Linuxの設定

 

また、VMWarePlayerの仮想マシン設定は今回は
「ブリッジ:物理ネットワークに直接接続」ですね。

 

 

 

SSHサーバの設定はrootログインの拒否やポート番号の変更などの設定を行います。
sshdが自動起動で有るかも確認しておきましょう。

 

また、認証方式はパスワード認証よりも公開鍵認証方式の方が
より安全かと思います。
また、上記の「Linuxカテゴリ」にてDenyHostsパッケージなどでの不正アクセス
対策についても説明していますので参照してみて下さい。
また、SSHアクセスが有った時点でメール送信する仕組みにするとより良いかと
思います。その方法を記載している方がおられました。

 

[CentOS] SSHログイン時にメール通知する設定

 

さらにルータのパケットフィルタやWindows側のファイアウォール、
CentOS側のfirewalldやiptableやhostsで、接続元のグローバルIPアドレスを
大きくアクセス制限しておいても良いかもしれないですね。
外出先からドコモのテザリングを使用して自宅へアクセスするので有れば
ドコモのグローバルIPアドレスのみ許可するなど。

 

グローバルIPアドレスの管理者やサブネットはおよそ以下のサイトで分かるかと思います。

 

IPアドレス調査

 

 

次に、VMWareのファイアウォール(firewalldやiptable)でSSH用ポートを開けます。

 

その後、WindowsからTeraTermなどでSSH接続が出来ることを確認しておきましょう。
接続できない場合、一旦初期ポートであるtcp/22で設定を実施し、確認して
みましょう。

 

そして、Windowsやウィルス対策ソフトのファイアウォールでSSH用ポートを開けます。
Windowsでこのポートを開ける意味は、WAN側からのパケットをルータを経由して
Windowsを経由して、VMWare上のCentOSまで通すためです。

 

自宅のWindowsでVNCを起動

 

VNCは以下のサイトからダウンロードしました。

 

REAL VNC

 

またはUltraVNCも有りますね。

 

UltraVNC

 

UltraVNC 日本語インストール版

 

インストール時、今後VNCサーバをサービスとして起動するようにしました。

 

VNCサーバのオプション画面を表示させます。

 

認証方式はVNCパスワードを選択しました。

 

 

 

パスワードを決定します。

 

 

 

「コンピュータ」→「管理」→「サービス」でVNC Serverサービスが開始している
ことを確認しました。また、念の為に右クリックから再起動しておきました。

 

 

 

コマンドプロンプトで「netstat -ano」と入力するとtcp/5900で待ち受けている
ことが確認できました。PID(プロセスID)も表示されています。

 

 

 

このプロセスIDは、どのサービスなのかを知るにはタスクマネージャーの「プロセス」タブ
をクリックしてから、「表示」→「列の選択」→「PID」でPIDを表示させます。

 

その後タスクマネージャー内のvncservive.exe項を右クリックし、
プロセスツリーを表示させるとPID6572は、正しくvncserver.exe
だということが分かりました。

 

 

次に、Windowsやウィルス対策ソフトのファイアウォールでtcp/5900を開けます。

 

その後、外出先で利用予定のVNCビューアでのリモート接続元であるPCへ、
VNCビューアをインストールし、まずは同じLAN内のネットワーク構成で
正しくVNCリモート接続ができることを確認しておきましょう。

 

 

 

ポートの開放

 

前提として、プロバイダから自宅のモデムやルータに割り振られるIPアドレスが
グローバルIPであることが必要です。

 

次に自宅のルータでSSHサーバ用のポート変換設定を行います。
SSHの初期設定ではtcp/22ですね。繰り返しになりますが、
ポートスキャンされにくいtcp/22以外のポート番号を使用
することを推奨します。

 

SSHサーバでSSH用ポートを変更するのが面倒であれば
「ルータのグローバルIPアドレスでtcp/32122」宛への通信は
「SSHサーバのtcp/22」宛とポート変換しても良いかもしれません。

 

LAN側のIPアドレスは、VMWareのCentOSのIPアドレスです。

 

 

SSHサーバへの接続とVNCビューアでの接続

 

 

■a. WindowsでTeraTermを使用する

先程は同一LAN内のWindows同士で確認しましたが、今回は
WAN側から確認してみましょう。

 

普段使っているキャリアのスマートフォンの無線テザリングを起動し、
Windowsがテザリング子機になり、TeraTermを起動し、
「自宅のルーターのグローバルIPアドレス:SSHポート番号」
にて接続してみましょう。

 

※自宅のルーターのグローバルIPアドレスを確認するには、自宅のWindowsから
確認くんへアクセスしたり、
自宅のルータにログインしステータスを確認したりすると分かります。

 

 

 

SSH接続できたことを確認したら、一旦SSH接続を終了します。
TeraTermを開き、「設定」→「SSH転送」をクリックします。

 

「追加」をクリックします。

 

 

 

SSHポート転送設定を行います。

 

 

 

「OK」をクリックします。

 

 

 

「設定」→「設定の保存」で今の設定を保存しておいても良いですね。

 

「ファイル」→「新しい接続」から、再度
「自宅ルータのグローバルIPアドレス:SSHポート番号」
へ接続します。

 

コマンドプロンプトでnetstat -anoとすると
「127.0.0.1:先ほど設定したポート番号」で待ち受けていることを
確認しておきましょう。

 

VNCビューアで「127.0.0.1」へアクセスします。

 

先ほどのTeraTermのSSH転送でローカルのポート番号を5900以外にした場合は
「127.0.0.1::ポート番号」です。コロンは1つではなく、2つですので間違えないように
しましょう。

 

※ポート番号がデフォルトの5900の場合はポート番号の指定は
必要ありません。

 

 

 

自宅のWindowsに接続できました。VMWare上のCentOSも見えますね。

 

 

 

もし自宅のブロードバンドルーターに、リモート起動(Wake On Lan)機能が
有れば、このWindowsがWake On Lanで起動後は無操作でVMWareが
起動するような設定にしておく形になるかと思います。

 

※「無操作でVMWareが起動するような設定」について

 

電源オフから実現する場合

Wake On Lanにて起動の際は、Windowsログインは自動ログインと設定しておく。
また、自動ログイン後にVMWareのCentOSが自動で起動するようにしておく。

 

スタンバイやスリープから実現する場合

この場合はVMWareを起動した状態でスタンバイやスリープにしておけば、
Wake On Lanで起動するだけで大丈夫かなと思います。
または「スタンバイやスリープからの復帰時はパスワードを必要としない」の
設定が必要かもしれません。
あとはリモート接続終了用に、スタンバイやスリープに移行するbatファイル
をデスクトップに置いていてもよいかもしれませんね。

 

※自宅のブロードバンドルーターに、リモート起動(Wake On Lan)機能が
無くても、ソフトバンクのシンプルスタイル(プリペイド携帯電話)などとマウスを
紐で括りつけておけば、外出先からこの携帯電話に発信すると、
それがこの携帯電話のバイブレーションきっかけでマウスが動いて
スタンバイやスリープが解除されるんじゃないかなと思います。

 

 

 

■b. AndroidでConnectBotを使用する

 

ダウンロードページ

 

 

「ユーザ名@ホスト名:ポート」を入力します。ホスト名は、自宅(ルータ)の
グローバルIPアドレスやドメイン名です。ドメイン名で入力したい場合は
よくあるのは下記項目のダイナミックDNSサービスを利用する方法です。

 

 

 

作成された接続設定を押します。

 

 

 

パスワード入力などを行い、自宅のSSHサーバへ正しくログイン出来ることを確認します。

 

 

もし、ポート転送を行いたい場合は左下のメニューアイコンから進めることが
可能です。
文字が小さい場合はサイズ強制で46x17くらいに設定しても良いですね。

 

 

 

メニューアイコンを押し、「ポート転送の追加」を押します。

 

 

 

値を入力します。転送先はVNCが起動している
WindowsのプライベートIPアドレスですね。
VNCビューアについては次の項目を参照してみて下さい。

 

 

 

■c. AndroidでServerauditorを使用する
Serverauditor - SSH/SFTP client
Crystalnix (2012-08-11)

 

 

ダウンロードページ

 

 

SSHサーバへの接続画面は以下です。先ほどのConnectBotとあまり
変わりません。必要な情報を入力して「Connect」を押す流れです。

 

 

 

メニューは左上のメニューアイコンを押すと表示されます。
ポートフォワードを行うには「Hosts」にて事前に接続設定を作成してから
「Port Forwarding」をクリックしてポート転送設定を作成します。

 

 

 

「Port Forwarding」の画面。転送先はVNCが起動している
WindowsのプライベートIPアドレスですね。

 

詳細は以下のページに記載しました。
AndroidでのVNCビューアの接続も記載しています。

 

 

 

自宅のWindowsでダイナミックDNSの設定

常に自宅へのアクセスは、SSHクライアントで自宅のグローバルIPアドレスを
入力して接続を行う、であれば以上で設定完了ですが、一般的には
自宅のグローバルIPアドレスは固定ではなく動的かと思います。

 

そのため、ダイナミックDNSの設定が必要になります。
不変のドメイン名でアクセス出来るようになりますね。

 

最近は自宅のブロードバンドルータやインターネットカメラでダイナミック
DNS設定を出来ることが多いので、Windowsではなくルータ側で
ダイナミックDNSを設定しても良いですね。

 

WindwosやLinuxでダイナミックDNSを行う場合、24時間いつでもWAN側の
動的IPアドレスが変更したタイミングでダイナミックDNSに通知したい場合、
WindowsPCやLinuxPCを24時間起動していなければならないのが欠点ですね。

 

ルータは基本的には24時間常時起動のため、そういう欠点がありませんね。
例えばNECのブロードバンドルーターであるAtermではBIGLOBEや、
お名前.comのダイナミックDNSが利用できます。このルータでのDDNS設定方法
は、以下のサイトに記載します。

 

 

WindowsでのダイナミックDNS(no-ip)の設定は以下のページに記載しました。
LinuxでDDNSを利用する場合はコマンドベースになるかと思います。