RaspberrypiにsshポートフォワーディングでVNC接続するときのメモ

2018.02.12
 

VNCを安全に接続するにはsshのトンネルを使う。家のRaspberrypiはDMZ に置かれて外部とさらされているので余計なポートはできるだけ増やしたくない。

1  環境  

リモート側(リモート操作される側)
  raspberry pi    tightvncserverをインストールしておく。
  サーバー名 momonga.local

クライアント側(リモート操作する方)
  linux  (Debian stretch)   xtighvncviewerをインストールしておく。
  

2  クライアント側の端末からsshポートフォワーディングで接続


  クライアント側の端末から次の書式で接続する。

  ssh -L クライアント側のポート:リモート側サーバー名:リモート側ポート  リモート側サーバ名 -l ユーザ名

    クライアント側のポートは任意の値 例 1234
    リモート側サーバー名はipアドレスでもOK  この例では momonga.local
    リモート側ポートは5900+ディスプレイ番号 ふつうは5901  =5901 + 1
    ユーザ名 hoge

 例
$  ssh -L 1234:momonga.local:5901 momonga.local -l hoge
 パスワードを入力してログインできたらそのままtighvncserverを起動する。
 ディスプレイNo1の場合、次のコマンド
$  tightvncserver :1
 
ちなみにvncを終了するときは tightvncserver -kill :ディスプレイ番号
この場合
$  tightvncserver  -kill :1
終わりにするときは上のコマンドで終了させておく。
  

4  viewerの起動

クライアント側でもう一つターミナルを起動してviewerを起動する
$ xtightvncviewer &

  接続先は次のように指定 サーバー名とポートの間にコロンが2つ
 localhost::1234
これでvncはローカルのポート1234からssh 経由でリモートの5901ポートと接続される。


5 その他

(1)確認 

 念の為リモート側に余計なポートが空いていないかをクライアント側から
  nmapを使ってポートスキャンしてみる。

$ nmap momonga.local

Starting Nmap 7.40 ( https://nmap.org ) at 2018-02-12 11:57 JST
Nmap scan report for momonga.local (192.168.1.204)
Host is up (0.0024s latency).
Not shown: 997 filtered ports
PORT    STATE SERVICE
22/tcp  open  ssh
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 16.19 seconds
 sshポート 22 とhttp ポート80  httpsポート443 しかポートは空いていない。ちなみにリモート側がufwでフィルタリングしている。


 ではクライアント側(local)はどうか。自分自信にnmapでポートスキャンする。
$  nmap localhost

Starting Nmap 7.40 ( https://nmap.org ) at 2018-02-12 12:10 JST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00054s latency).
Other addresses for localhost (not scanned): ::1
Not shown: 994 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
139/tcp  open  netbios-ssn
445/tcp  open  microsoft-ds
631/tcp  open  ipp
1234/tcp open  hotline

Nmap done: 1 IP address (1 host up) scanned in 0.38 seconds

1234が空いていることがわかる。