SSH接続とVNCで遠隔操作

2017/10/31 通信処理ネットワーク研究室 河田直樹

お品書き

今日の流れ

今日は 無線LANのIPアドレスを固定した上で SSH接続 と VNC接続 を行う.

IPアドレスを固定することで次回以降も同じネットワーク内では設定したIPアドレスを割り当てるようになる.

SSH接続やVNC接続ではIPアドレスを指定して接続するため,IPアドレスの固定によりアクセスしやすくなる.

各自のノートパソコンよりラズパイにアクセスすることで,次回以降ディスプレイを接続する必要はなくなる.

5-1. IPアドレスの固定

特定端末に接続したいときに,わざわざIPアドレスを毎回調べて接続するには手間がかかる.

そのため,IPアドレスの固定が重要になってくる.

IPアドレスを固定するにはIPアドレスだけでなく,サブネットマスクとデフォルトゲートウェイも確認する必要がある.

IPアドレスの固定手順

① ラズパイのターミナル(端末)を起動し,以下のコマンドを入力する.

$ ifconfig

すると図1のようにネットワーク・インターフェースが参照できる(有線LANは「eth0」,無線LANは「wlan0」にあたる).

図1では現在のIPアドレスとサブネットマスクが下線部にあたる.

図1


② 次のコマンドを入力し,デフォルトゲートウェイを調べる.

$ route

図2に示した下線部がデフォルトゲートウェイである.

図2


③ 図3のようにWiFiマークを右クリックし,「Wireless & Wired Network Settings」をクリックする.

図3


④ 図4の画面が出るので赤枠で示した右上の場所で設定項目を切り替える.

有線LANの場合は「eth0」,無線LANの場合は「wlan0」を指定する.

今回は無線LANの設定紹介を行うので「wlan0」を選択する.

図4


⑤ 図5のようにIPアドレスの設定を行う.

IPv4 Address」欄に固定するIPアドレスとネットマスク長を入力する.

今回はIPアドレスを整理するために,IPアドレスを指定する.

IPアドレスのホスト部を[100+各自の箱番号](101~109)にせよ.

おそらく固定するIPは133.20.164.101から133.20.164.109の範囲になるはず.

ネットマスク長はサブネットマスクをビットで表したときの1の桁数である.

255.255.255.0の場合はビットで表すと11111111.11111111.11111111.00000000となり24桁なので,ネットマスク長の記入は/24となる.

Router」欄と「DNS Server」欄にはデフォルトゲートウェイを入力する.

上の「Automatically configure empty options」にチェックが入っている状態にする.

ここまでできたら「適用」をクリックして保存し,「閉じる」をクリックする.

図5


⑥ 以下のコマンドを入力し,ラズパイを再起動する.

$ shutdown -r now

もしくは以下のコマンドでも再起動できる.

$ reboot

⑦ 再起動が完了したらターミナルより次のコマンドを入力し,IPアドレスの確認を行う.

$ ifconfig

図6のように設定したIPアドレスに変わっていることを確認できたらIPアドレスの固定は完了.

図6


5-2. SSH接続による遠隔操作

SSH(Secure Shell)は安全にリモートコンピュータと通信するためのプロトコルだ.

まずはラズパイのSSHサーバを有効にする.

そのあとノートパソコンを使って,SSH接続を行う.

SSH接続手順

① 以下のコマンドを入力し,ラズパイの設定ツールを呼び出す.

$ sudo raspi-config

② コマンド入力すると図7の画面が表示される.

方向キーで「5 Interfacing Options」を選択して[Enter]を押す.

図7


③ 図8の画面が表示されるので,方向キーで「P2 SSH」を選択して[Enter]を押す.

図8


④ 図9のようにSSHサーバを有効にするかを問われるので,「はい」を選択して[Enter]を押す.

方向キーで「5 Interfacing Options」を選択して[Enter]を押す.

図9


⑤ 図10のように"The SSH server is enabled"と表示されれば成功.

[Enter]を押して完了する.

図10


⑥ 最初の設定画面に戻るので,左右の方向キーを押して「Finish」を選択して[Enter]を押すことで設定ツールを終了する.

図11


⑦ 次にノートパソコンよりTera Termを起動する.

図12


⑧ 起動すると図13のような画面が表示される.

TCP/IP」を選択する.

ホスト」欄に5-1で固定したIPアドレスを入れる.

ヒストリ」にチェックを入れるとホスト欄にIPアドレスが残るようになる.

サービス」では「SSH」を選択する.

TCPポート」欄が22に指定されていることを確認する.

SSHバージョン」は「SSH2」を選択する.

プロトコル」は「UNSPEC」を選択する.

以上が確認できたら「OK」をクリックする.

図13


⑨ 図14のような画面が表示される.

このホストをknown hostsリストに追加する」にチェックが入っていることを確認する.

続行」をクリックする.

図14


⑩ 続いて図15のような画面が表示される.

ユーザ名」欄に「pi」を入れる.

パスフレーズ」欄にはラズパイに前々回設定したパスワードを入れる(変更していなければ初期PWのraspberry).

プレインパスワードを使う」を選択する.

OK」をクリックする.

図15


⑪ ログインに成功すると図16のような画面が表示される.

これでSSH接続が完了した.

ラズパイでのターミナルのようにコマンドを打つことで遠隔操作が可能だ.

図16


⑫ ここで推奨設定を紹介する.

(図17)「設定」→「TCP/IP...」を選択する.

図18の画面より「自動的にウィンドウを閉じる」のチェックを外す.

OK」をクリックする.

これにより接続が切れるたびにウィンドウを起動しなおす手間がなくなる.

再度接続するには[ファイル]→[新しい接続]を選択する.

図17

図18


5-3. VNCによる遠隔操作

VNC(Virtual Network Computing)はGUIによる遠隔操作ができるツールである.

ただし,暗号化されていないためインターネットを介しての接続は非常に危険である.

今回はネットワーク内でできる簡単な接続方法をVNCviewerを用いて紹介する.

VNC接続手順

① 以下のコマンドを入力し,ラズパイの設定ツールを呼び出す.

$ sudo raspi-config

これ以降の説明は図19のようにTeraTermを用いたSSH接続の画面で示す.

図19


② コマンド入力すると図20の画面が表示される.

方向キーで「5 Interfacing Options」を選択して[Enter]を押す.

図20


③ 図21のような画面が出るので,方向キーで「P3 VNC」を選択して[Enter]を押す.

図21


④ 図22のようにVNCサーバを有効にするかを問われるので,「はい」を選択して[Enter]を押す.

図22


⑤ 図23のように"The VNC server is enabled"と表示されれば成功.

[Enter]を押して完了する.

図23


⑥ 最初の設定画面に戻るので,左右の方向キーを押して「Finish」を選択して[Enter]を押すことで設定ツールを終了する.

図24


⑦ 次にノートパソコンよりVNC viewerを起動する.

図25


⑧ 起動すると図26のような画面が表示される.

上のアドレスバーに5-1で固定したIPアドレスを入れて[Enter]を押す.

図26


⑨ 接続時に図27のようなポップアップ画面が表示される.

Continue」をクリックする.

図27


⑩ 続いて図28のようなログイン画面が表示される.

Username」欄に「pi」を入れる.

Password」欄にはラズパイに前々回設定したパスワードを入れる(変更していなければ初期PWのraspberry).

OK」をクリックする.

図28


⑪ ログインに成功すると図29のようにデスクトップ画面が表示される.

これでVNC接続が完了した.

ラズパイのVNC接続による遠隔操作が可能だ.

図29


解像度を変更する

ディスプレイを接続しないで接続した場合に初期設定だと図30のように解像度が720*480と小さく表示されてしまう.

そこで設定ファイルを編集して解像度を変更する方法を紹介する.

図30


① ターミナルを起動し,以下のコマンドを入力する.

/boot/config.txtをエディタで編集する.

$ sudo nano /boot/config.txt

図31


② /boot/config.txtの25~29行目辺りに以下の記述を探す.

まとめて書いているが,実際は図32のように数行離れている.

#hdmi_force_hotplug=1
#hdmi_group=1
#hdmi_mode=1

hdmi_force_hotplug」はディスプレイの出力を強制的にHDMIにするフラグ.

hdmi_group」はテレビ出力なら1,PC用ディスプレイに出力するなら2を選択する.

hdmi_mode」は解像度の種類を指定する.

図32


③ まず3行全ての#(コメントアウト記号)を外す.

hdmi_group」は 2 (PC Display) を推奨.

hdmi_mode」は以下のサイトを参考に各自の環境に合うものを指定する.

https://elinux.org/RPiconfig#Video_mode_options

図33の例では 28 (1280*800 60Hz) を指定した.

図33


① 編集内容を保存し,以下のコマンドを入力して再起動する.

$ shutdown -r now

① 再起動が終わると図34のように設定通りの解像度で表示されるようになる.

図34


5-4. VNC通信の暗号化

VNC通信を暗号化してセキュリティを高める方法

セキュリティが気になって夜も眠れない方におすすめ

SSH ポートフォワーディングを使ったVNC接続の方法を紹介する.

流れは以下の通り


事前準備

以下のサイトよりPuttyをダウンロードする.

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

接続手順

① Puttyを起動する.

図35


② 起動すると図36の画面が表示される.

HostName」欄に5-1で固定したIPアドレスを入力する.

Connection type」で「SSH」にチェックを付ける.

図36


③ (図37)左のナビゲーションウィンドウより,「Connection」→「SSH」→「Tunnels」を選択する.

図37


④ (図38)「Souce port」欄に「1234」(任意のローカルポート)を入力する.

Destination」欄に「(固定したIP):5901」を入力する.(:ポート番号でポートの指定を意味する.)

ポート5901番は後に起動する仮想ディスプレイにつながることになる.

入力が終わったら「Add」をクリックする.

図39のようにリストが追加されれば成功.

図38

図39


⑤ (図40)左のナビゲーションウィンドウより,一番上の「Session」を選択する.

図40


⑥ 今回の設定を保存する.

(図41)「Saved Sessions」欄に任意の名前を入力する.

入力出来たら「Save」をクリックする.

図42のようにリストが追加されれば成功.

図41

図42


⑦ 以上でSSHポートフォワーディングの設定が完了した.

続けてSSHのログインを行う.

(図43)「Open」をクリックしてSSH接続を開始する.

図43


⑧ 起動したらログインを要求されるので,piでログインしパスワードを入れる.

図44のようにコマンドラインが表示されればログイン完了となる.

図44


⑨ 以下のコマンドを入力し,VNCServerを立てて仮想ディスクトップを作る.

$ vncserver

図45のように"New desktop is raspberrypi:1 (133.20.164.100:1)"と表示され,ポート5901番で仮想ディスクトップにアクセスできるようになった.

図45

なお,仮想ディスプレイを消す場合は以下のコマンドを入力する(:の後にディスプレイ番号が続く,下記は1の場合のコマンド).

$ vncserver -kill :1

⑩ 仮想ディスプレイを作成したらVNC viewerを用いて接続する

図46


⑪ (図47)VNC viewerで「localhost::1234」に接続する.

図47


⑫ 接続時に図48のようなポップアップ画面が表示される.

Continue」をクリックする.

図48


⑬ 続いて図49のようなログイン画面が表示される.

Username」欄に「pi」を入れる.

Password」欄にはラズパイに前々回設定したパスワードを入れる(変更していなければ初期PWのraspberry).

OK」をクリックする.

図49


⑭ ログインに成功すると図45のようにデスクトップ画面が表示される.

これでSSHポートフォワーディングによるセキュリティが強化されたVNC接続が完了した.

VNC通信をSSH接続により行っているため,PuttyのSSH接続を切断するとVNCの接続も切れてしまうことに注意する.

図50


参考文献

  1. エンジニアの入口 (https://eng-entrance.com/)
  2. インターネットでPCリモート操作 - リモートマニア〔VNC〕 (http://remomani.com/)
  3. ここから始めるVine Linux(http://www14.plala.or.jp/campus-note/vine_linux.html)
dspトップへ