VNC
2010/05/25 HM; 2012/08/09 奈佐原; 2018/11/02 奈佐原
VNCでパソコンを遠隔操作する
VNCの通信は、通常暗号化されないのでセキュリティの面で危険である。
なのでsshポートフォアーディングという方法を用いたVNCが一般的。
この場合、データのやりとりはssh通信で行われるため安全である。
以下にsshポートフォアーディングを用いたVNCのやり方を示す。
VNCを行うには、サーバ側とクライアント側で設定を行う必要がある。
サーバ側の設定
遠隔操作したいサーバにsshで入ってvncserverをインストールする。
$ ssh [ユーザー名]@[サーバのドメインまたはIPアドレス] $ sudo apt-get install (tightvncserver もしくは vnc4server )
※tomokoには、既にtightvncserverがダウンロードされている。
VNCサーバを起動する。
$ vncserver
このとき、ポート番号の下一桁が割り振られるのでメモ。 例えば、
New 'pen:3(hadano)' desktop is pen:3
と表示された時、割り振られたポート番号は5903になる (vncのポート番号は5900番台からと決まっている)。
VNCでGUI(グラフィカルユーザーインターフェイス)を使いたいときは、以下の設定を行う。
/home/username/.vnc/xstartupの最終行に, exec gnome-session & を追記する。 また, 以下の二つの#を消せばOKという説もある... # unset SESSION_MANAGER # exec /etc/x11/xinit/xinitrc . . .
設定を反映させるには、一度vncを停止させ、再起動する。
$vncserver -kill :[ポート番号下一桁] $vncserver
これでサーバー側の設定は完了。sshを終了し, サーバから出て構わない。
クライアント側
まず、vncviewerをインストールする。
$ sudo apt-get install xvnc4viewer
sshポートフォワードを行い, sshのトンネルを作る。 ※590?の"?"は、vncserverを起動した時の数字に合わせる。
$ ssh -L 5555:[127.0.0.1]:[590?] [ユーザー名]@[サーバのドメインまたはIPアドレス]
例)
$ ssh -L 5555:127.0.0.1:5903 username@xxx.tsukuba.ac.jp
もうひとつ端末を立ち上げて、vncviewerを起動する。
$ vncviewer
接続先とpasswdを入力する。
接続先 : localhost:5555 passwd : 自分のpasswd
これで出来るはず。
複数のVNCサーバーマシンに一気にアクセス!
事前準備(1回やればOK)
- SSHの踏み台のマシンとの鍵交換
- VNCパスワードの暗号化・ファイル化
- $ vncpasswd ~/.vnc/passwd1
- $ vncpasswd ~/.vnc/passwd2
- などで, アクセス先のサーバーごとのパスワードを暗号化ファイルにしておく。
その上で, 以下のようなスクリプトを走らせればOK。
#!/bin/bash ssh -fNT -L 5555:192.168.0.1:5900 username@123.45.67.8 ssh -fNT -L 5556:192.168.0.2:5900 username@123.45.67.9 ssh -fNT -L 5557:192.168.0.3:5900 username@123.45.68.0 vncviewer localhost:5555 -passwd ~/.vnc/passwd1 & vncviewer localhost:5556 -passwd ~/.vnc/passwd2 & vncviewer localhost:5557 -passwd ~/.vnc/passwd ps aux | grep "ssh -fNT -L" | grep -v grep | awk '{print "kill "$2}' | sh
Keyword(s):
References:[とらりもんHOME] [トレーニングコース]