SSHポートフォワーディングの設定

自宅~職場間でPCを遠隔操作する場合,Google Remote Desktopが便利である。しかし,昨今のリモートワークでサーバが混雑しているせいか,応答が遅いことがままある。VNCでつないでしまえば速いのだが,そのままではセキュリティが不安である。

ということで,SSHポートフォワーディングでVNCを接続することにしたので,その設定の備忘録である。

 

0,SSHポートフォワーディングの基本的な概要

(1) 外部端末から,グローバルIPアドレスが付与されている自宅のルータのポート22にアクセスする。

(2) 自宅のルータは,WAN側ポート22に入ってきた通信を,LAN内SSHサーバのポート22に転送する。

(3) これで,外部端末とLAN内SSHサーバとの間で,暗号化通信が確立される。

(4) このSSH通信に,「自宅WindowsマシンへのVNC接続」を「載せる」。

(5) そうすると,自宅WindowsマシンへのVNC接続が,SSHにより暗号化される。

 

1,SSHサーバの設定

基本的に何かをする必要はない。ただし,ポート22(SSHの初期ポート)を開けっぱなしにするというのは感覚的に気持ち悪い。そんなの気休めだ意味は無い,というのも分かるけれど,一応ポートは変えておきたい気分である。

が,突然変えてしまうというのも,設定を間違えたときに再ログインできなくなって不便である。で,なるほどと思ったのが,SSHの設定でポート22と,たとえばポート222の双方を受け付けるようにして,ポート222での設定がうまくいったらポート22をルータで塞ぐなり,削除するなりする,というやり方。

ポートに関する設定ファイルは,

/etc/ssh/sshd_config

なので,そこの

#Port 22

の行の下あたりに,使うポートを指定して書き込む。こんなふうに。

#Port 22

Port 22

Port 222

これで,ポート222でも,22でも,SSHがつながることになる。うまくいいくことが分かったら,"Port 22"の行を削除すればよい。

設定したら,

sudo systemctl restart sshd

sshdを再起動する。

 

2,自宅ルータの設定

いわゆるポートフォワーディングの設定を行う。WAN側ポート222に入ってきた通信を,SSHサーバのポート222に転送する設定を行えばよい。

どうも自宅のルータは,転送先のPCをIPアドレスで指定するようである。自宅LAN内のIPアドレスは,DHCPで振っているので,本当はこういう直接指定は良くないのだろうが,実用上問題ないくらいには変わってないので,よしとする。

 

3,外部端末の設定その1

外部端末にTera Termをインストールする。問題なく終了するはず。

Tera Termで,接続先を,「自宅ルータのグローバルIPアドレス:222」と指定すると,自宅ルータがポートフォワードをしてくれて,SSHサーバのポート222に通信が転送されるので,Tera Termで自宅SSHサーバにログインできるようになる。

 

4,外部端末の設定その2

Tera Term丈夫メニューの「設定」-「SSH転送」をクリックすると,ポート転送の設定画面になる。転送ルールを設定するので,「追加」ボタンをクリックすると,「ポート転送を行う向きの選択」という画面になる。

その画面で,「ローカルのポート」を選択し,適当な数字,たとえば「33890」と入力する。「リッスン」は空欄にする。

「リモート側ホスト」には,自宅WindowsマシンのプライベートIPアドレスを指定し,「ポート」には,自宅WindowsマシンのVNCサーバが使用しているポートを入力する。自宅WindowsマシンのVNCサーバが「33891」で待ち受けているならば,「ポート」には,「33891」と入力する。

あとは,OKを押して設定メニューを閉じる。

その後,再び「設定」-「設定の保存」で,設定内容を保存する。

 

5,Tera Termの再起動

Tera Termを一旦閉じて,再び起動し,上記「3,」の手続を踏んでSSHで接続する。

 

6,VNCクライアントの設定

外部端末のVNCの設定画面において,localhost(127.0.0.1)のポート33890を接続先に指定する。

これにより,VNCクライアントは,自身のPCのポート33890に接続しようとし,そこでSSHの設定により宛先を「自宅WIndowsマシンのポート33891」に書き換えられ,VNCの通信は,SSH通信に「載せられる」ことになる。

あとは,SSHサーバ側でSSHによる暗号化が解かれ,そうすると出て来た通信は「自宅WIndowsマシンのポート33891」宛てということになるから,SSHサーバは自宅Windowsマシンのポート33891宛てにその通信を転送する。

 

7,かくして,外部端末のVNCクライアントは,自宅WIndowsマシンのVNCサーバと通信することが可能になる,というわけである。

 

8,Tera Termのターミナルを閉じると,VNC通信も閉じてしまうので,VNC通信がSSH通信に「載っている」ころがわかる。