ページ「X11vnc/Debian9.9」と「Sshのインストール」の間の差分

提供: とある社畜の頭脳整理
(ページ間の差分)
ナビゲーションに移動 検索に移動
 
 
1行目: 1行目:
デスクトップ環境を使用している場合、リモートでデスクトップを使用したい場合があります。<br/>
+
手順化するまでもないかなとも思いつつ…<br/>
今回はX11vncを使用して、リモートでデスクトップに接続してみようと思います。
+
細かい設定までは調べたことがなかったので、設定の情報を含めてインストールしてみます。
  
= X11vncのインストール =
+
= インストール =
下記コマンドを実行して、X11vncをインストールします。
+
以下のコマンドを実行します。
 
+
<syntaxhighlight lang="bash">pacman -S openssh</syntaxhighlight>
<syntaxhighlight lang="bash">sudo apt-get install x11vnc</syntaxhighlight>
 
(確認されたら「y」を押してください)<br/>
 
だぁ~っとなってインストールが完了します。
 
<syntaxhighlight lang="text">test@debian:~$ sudo apt-get install x11vnc
 
パッケージリストを読み込んでいます... 完了
 
依存関係ツリーを作成しています               
 
状態情報を読み取っています... 完了
 
以下の追加パッケージがインストールされます:
 
  libtcl8.6 libtk8.6 libvncclient1 libvncserver1 tcl tcl8.6 tk tk8.6 x11vnc-data
 
提案パッケージ:
 
  tcl-tclreadline
 
以下のパッケージが新たにインストールされます:
 
  libtcl8.6 libtk8.6 libvncclient1 libvncserver1 tcl tcl8.6 tk tk8.6 x11vnc x11vnc-data
 
アップグレード: 0 個、新規インストール: 10 個、削除: 0 個、保留: 3 個。
 
3,503 kB のアーカイブを取得する必要があります。
 
この操作後に追加で 10.3 MB のディスク容量が消費されます。
 
続行しますか? [Y/n] y
 
取得:1 http://ftp.jp.debian.org/debian stretch/main amd64 libtcl8.6 amd64 8.6.6+dfsg-1+b1 [985 kB]
 
取得:2 http://ftp.jp.debian.org/debian stretch/main amd64 libtk8.6 amd64 8.6.6-1+b1 [754 kB]
 
取得:3 http://ftp.jp.debian.org/debian stretch/main amd64 libvncclient1 amd64 0.9.11+dfsg-1.3~deb9u1 [141 kB]
 
取得:4 http://ftp.jp.debian.org/debian stretch/main amd64 libvncserver1 amd64 0.9.11+dfsg-1.3~deb9u1 [210 kB]
 
取得:5 http://ftp.jp.debian.org/debian stretch/main amd64 tcl8.6 amd64 8.6.6+dfsg-1+b1 [123 kB]
 
取得:6 http://ftp.jp.debian.org/debian stretch/main amd64 tcl amd64 8.6.0+9 [5,468 B]
 
取得:7 http://ftp.jp.debian.org/debian stretch/main amd64 tk8.6 amd64 8.6.6-1+b1 [71.8 kB]
 
取得:8 http://ftp.jp.debian.org/debian stretch/main amd64 tk amd64 8.6.0+9 [5,506 B]
 
取得:9 http://ftp.jp.debian.org/debian stretch/main amd64 x11vnc-data all 0.9.13-2+deb9u1 [216 kB]
 
取得:10 http://ftp.jp.debian.org/debian stretch/main amd64 x11vnc amd64 0.9.13-2+deb9u1 [992 kB]
 
 
 
~ 中略 ~
 
  
libc-bin (2.24-11+deb9u4) のトリガを処理しています ...
+
だーっと、インストールされます。<br/>
man-db (2.7.6.1-2) のトリガを処理しています ...
+
インストール自体はこれで完了ですが…<br/>
gnome-menus (3.13.3-9) のトリガを処理しています ...
+
この状態ではssh接続できないので、サービスを起動します。
libtcl8.6:amd64 (8.6.6+dfsg-1+b1) を設定しています ...
+
<syntaxhighlight lang="bash">systemctl start sshd
libtk8.6:amd64 (8.6.6-1+b1) を設定しています ...
+
systemctl enable sshd</syntaxhighlight>
tcl8.6 (8.6.6+dfsg-1+b1) を設定しています ...
+
念のため、正常に起動しているか確認します。
tk8.6 (8.6.6-1+b1) を設定しています ...
+
<syntaxhighlight lang="bash">systemctl status sshd</syntaxhighlight>
tcl (8.6.0+9) を設定しています ...
+
「active (running)」と表示されていれば正常に起動しています。
tk (8.6.0+9) を設定しています ...
 
x11vnc (0.9.13-2+deb9u1) を設定しています ...
 
libc-bin (2.24-11+deb9u4) のトリガを処理しています ...</syntaxhighlight>
 
  
= 自動ログインの設定 =
+
= 設定 =
X11vncですが、基本的にログインしている状態でないと、リモートで接続することができません。<br/>
+
セキュリティを加味して、ポート番号など変更したい場合があるかと思います。<br/>
なので、画面からリモートで接続したいユーザーで自動ログインするようにします。
+
その場合、「/etc/ssh/sshd_config」ファイルで設定します。<br/>
 +
基本的デフォルトの設定で動作しますので、変更したい場合は「sshd_config」内でコメントを外して設定します。
  
PC本体にディスプレイ及びキーボード・マウスを接続して、ログイン画面を表示させます。<br/>
+
以下、私がよく変更する設定項目だけ上げていきます。
[[ファイル:Debian-x11vnc-001.png | 400px]]<br/>
 
  
パスワードを入力して、「サインイン」をクリックまたはエンターキーを押します。<br/>
+
<dl>
[[ファイル:Debian-x11vnc-002.png | 400px]]<br/>
+
<dt>Port</dt>
 +
<dd>ssh接続するポート番号を指定します。<syntaxhighlight lang="text">#9022番ポートで接続したい場合
 +
Port 9022</syntaxhighlight></dd>
 +
<dt>PermitRootLogin</dt>
 +
<dd>rootアカウントでのログインの可/不可を設定します。<syntaxhighlight lang="text">#rootアカウントでのログインを許可する場合
 +
PermitRootLogin yes
  
デスクトップが表示されたら、画面右上の下向き矢印「▼」をクリックします。<br/>
+
#rootアカウントでのログインを許可しない場合
[[ファイル:Debian-x11vnc-003.png | 400px]]<br/>
+
PermitRootLogin no</syntaxhighlight></dd>
 +
<dt>PubkeyAuthentication</dt>
 +
<dd>公開鍵・秘密鍵を使用したログインの可/不可を設定します。<syntaxhighlight lang="text">#公開鍵・秘密鍵を使用したログインを許可する場合
 +
PubkeyAuthentication yes
  
ログインしているユーザーが表示されるので、それをクリックします。<br/>
+
#公開鍵・秘密鍵を使用したログインを許可しない場合
[[ファイル:Debian-x11vnc-004.png | 400px]]<br/>
+
PubkeyAuthentication no</syntaxhighlight></dd>
 +
<dt>PasswordAuthentication</dt>
 +
<dd>パスワードによるログインの可/不可を設定します。<syntaxhighlight lang="text">#パスワードによるログインを許可する場合
 +
PasswordAuthentication yes
  
「アカウント設定」をクリックします。<br/>
+
#パスワードによるログインを許可しない場合
[[ファイル:Debian-x11vnc-005.png | 400px]]<br/>
+
PasswordAuthentication no</syntaxhighlight></dd>
 +
<dt>X11Forwarding</dt>
 +
<dd>X11ポートフォワードの可/不可を設定します。<syntaxhighlight lang="text">#x11ポートフォワードを許可する場合
 +
X11Forwarding yes
  
「ロック解除」をクリックします。<br/>
+
#x11ポートフォワードを許可しない場合
[[ファイル:Debian-x11vnc-006.png | 400px]]<br/>
+
X11Forwarding no</syntaxhighlight></dd>
 +
</dl>
  
パスワードの入力が促されるので、ユーザーに対応したパスワードを入力します。<br/>
+
= 公開鍵・秘密鍵を使用して接続する =
[[ファイル:Debian-x11vnc-007.png | 400px]]<br/>
+
セキュリティを加味して公開鍵・秘密鍵(鍵ペア)を作成して、認証する設定に変更します。<br/>
 +
パスワード認証でもそれなりに長いパスワードにすれば良いのかもしれませんが、[https://ja.wikipedia.org/wiki/%E7%B7%8F%E5%BD%93%E3%81%9F%E3%82%8A%E6%94%BB%E6%92%83 ブルートフォースアタック]をされたりすれば、安全とは言い切れません。<br/>
 +
鍵ペアを使用した認証は、「公開鍵をサーバーに設定」「秘密鍵を接続するクライアントに配布」することで、秘密鍵を持っているクライアントしか接続できなくなります。<br/>
 +
秘密鍵を厳密に管理すれば、理論上安全と言えます。<br/>
  
「認証」ボタンをクリックします。<br/>
+
以下の手順は実は手を抜いて、秘密鍵をサーバー側で作成しています。<br/>
[[ファイル:Debian-x11vnc-008.png | 400px]]<br/>
+
(厳密に言えば、秘密鍵は秘密にしたいわけで…ネットワーク上に流すのははばかられます…)<br/>
 +
なので、以下の手順は「まぁ…そこまでは気にしないよ」という方向けですwww。
  
ロックが解除されるので、「自動ログイン」をクリックして、「オン」にします。<br/>
 
[[ファイル:Debian-x11vnc-009.png | 400px]]<br/>
 
  
設定の確認をするために、ウインドウ左上の左向き矢印「<」をクリックします。<br/>
+
以下のコマンドで鍵ペアを生成します。
[[ファイル:Debian-x11vnc-010.png | 400px]]<br/>
+
<syntaxhighlight lang="bash">ssh-keygen -t rsa -b 4096</syntaxhighlight>
  
「ユーザー」をクリックします。自動ログインがオンになっていればOKです。<br/>
 
[[ファイル:Debian-x11vnc-011.png | 400px]]<br/>
 
  
最後に「<strong><u>ログインした状態のまま</u></strong>」にしておきます。
+
鍵ペアの格納先を聞かれたら、任意に指定します。<br/>
 +
(デフォルトでいい場合は、何も入力せずにEnterキーを押します)
 +
<syntaxhighlight lang="bash">Enter file in which to save the key (/home/test/.ssh/id_rsa):</syntaxhighlight>
  
= X111vncのパスワード設定 =
 
認証なしで画面が見れてしまうのは危険(特にログインしっぱなし)なので、パスワードを設定します。<br/>
 
以下のコマンドを実行します。
 
<syntaxhighlight lang="bash">x11vnc -storepasswd</syntaxhighlight>
 
 
すると、パスワードの入力が2回求められるので、2回とも同じパスワードを入力します。<br/>
 
また、ホームディレクトリの「.vnc」ディレクトリに保存するか問われるので、「y」を入力します<br/>
 
<syntaxhighlight lang="bash">test@debian:~$ x11vnc -storepasswd
 
Enter VNC password:
 
Verify password:   
 
Write password to /home/test/.vnc/passwd?  [y]/n y
 
Password written to: /home/test/.vnc/passwd
 
test@debian:~$ </syntaxhighlight>
 
 
= X11vncの起動 =
 
最小限のオプションで起動してみます。<br/>
 
以下のコマンドを実行します。
 
<syntaxhighlight lang="bash">x11vnc -display :0 -rfbauth ~/.vnc/passwd</syntaxhighlight>
 
上記は、「ディスプレイ番号0(5900ポート)で『~/.vnc/passwd』に設定されたパスワード認証で起動」という意味です。<br/>
 
以下のようなメッセージが出て、カーソルが点滅して戻ってこなかったら起動しています(色々言われていますが…www)。<br/>
 
<syntaxhighlight lang="bash">24/06/2019 14:50:39 passing arg to libvncserver: -rfbauth
 
24/06/2019 14:50:39 passing arg to libvncserver: /home/test/.vnc/passwd
 
24/06/2019 14:50:39 x11vnc version: 0.9.13 lastmod: 2011-08-10  pid: 2472
 
24/06/2019 14:50:39 Using X display :0
 
24/06/2019 14:50:39 rootwin: 0x280 reswin: 0x1400001 dpy: 0x84e7bfe0
 
24/06/2019 14:50:39
 
24/06/2019 14:50:39 ------------------ USEFUL INFORMATION ------------------
 
24/06/2019 14:50:39 X DAMAGE available on display, using it for polling hints.
 
24/06/2019 14:50:39  To disable this behavior use: '-noxdamage'
 
24/06/2019 14:50:39
 
24/06/2019 14:50:39  Most compositing window managers like 'compiz' or 'beryl'
 
24/06/2019 14:50:39  cause X DAMAGE to fail, and so you may not see any screen
 
24/06/2019 14:50:39  updates via VNC.  Either disable 'compiz' (recommended) or
 
24/06/2019 14:50:39  supply the x11vnc '-noxdamage' command line option.
 
24/06/2019 14:50:39
 
24/06/2019 14:50:39 Wireframing: -wireframe mode is in effect for window moves.
 
24/06/2019 14:50:39  If this yields undesired behavior (poor response, painting
 
24/06/2019 14:50:39  errors, etc) it may be disabled:
 
24/06/2019 14:50:39    - use '-nowf' to disable wireframing completely.
 
24/06/2019 14:50:39    - use '-nowcr' to disable the Copy Rectangle after the
 
24/06/2019 14:50:39      moved window is released in the new position.
 
24/06/2019 14:50:39  Also see the -help entry for tuning parameters.
 
24/06/2019 14:50:39  You can press 3 Alt_L's (Left "Alt" key) in a row to
 
24/06/2019 14:50:39  repaint the screen, also see the -fixscreen option for
 
24/06/2019 14:50:39  periodic repaints.
 
24/06/2019 14:50:39
 
24/06/2019 14:50:39 XFIXES available on display, resetting cursor mode
 
24/06/2019 14:50:39  to: '-cursor most'.
 
24/06/2019 14:50:39  to disable this behavior use: '-cursor arrow'
 
24/06/2019 14:50:39  or '-noxfixes'.
 
24/06/2019 14:50:39 using XFIXES for cursor drawing.
 
24/06/2019 14:50:39 GrabServer control via XTEST.
 
24/06/2019 14:50:39
 
24/06/2019 14:50:39 Scroll Detection: -scrollcopyrect mode is in effect to
 
24/06/2019 14:50:39  use RECORD extension to try to detect scrolling windows
 
24/06/2019 14:50:39  (induced by either user keystroke or mouse input).
 
24/06/2019 14:50:39  If this yields undesired behavior (poor response, painting
 
24/06/2019 14:50:39  errors, etc) it may be disabled via: '-noscr'
 
24/06/2019 14:50:39  Also see the -help entry for tuning parameters.
 
24/06/2019 14:50:39  You can press 3 Alt_L's (Left "Alt" key) in a row to
 
24/06/2019 14:50:39  repaint the screen, also see the -fixscreen option for
 
24/06/2019 14:50:39  periodic repaints.
 
24/06/2019 14:50:39
 
24/06/2019 14:50:39 XKEYBOARD: number of keysyms per keycode 10 is greater
 
24/06/2019 14:50:39  than 4 and 100 keysyms are mapped above 4.
 
24/06/2019 14:50:39  Automatically switching to -xkb mode.
 
24/06/2019 14:50:39  If this makes the key mapping worse you can
 
24/06/2019 14:50:39  disable it with the "-noxkb" option.
 
24/06/2019 14:50:39  Also, remember "-remap DEAD" for accenting characters.
 
24/06/2019 14:50:39
 
24/06/2019 14:50:39 X FBPM extension not supported.
 
24/06/2019 14:50:39 X display is capable of DPMS.
 
24/06/2019 14:50:39 --------------------------------------------------------
 
24/06/2019 14:50:39
 
24/06/2019 14:50:39 Default visual ID: 0x21
 
24/06/2019 14:50:39 Read initial data from X display into framebuffer.
 
24/06/2019 14:50:39 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/3200
 
24/06/2019 14:50:39
 
24/06/2019 14:50:39 X display :0 is 32bpp depth=24 true color
 
24/06/2019 14:50:39
 
24/06/2019 14:50:39 Autoprobing TCP port
 
24/06/2019 14:50:39 Autoprobing selected TCP port 5900
 
24/06/2019 14:50:39 Autoprobing TCP6 port
 
24/06/2019 14:50:39 Autoprobing selected TCP6 port 5900
 
24/06/2019 14:50:39 listen6: bind: Address already in use
 
24/06/2019 14:50:39 Not listening on IPv6 interface.
 
24/06/2019 14:50:39
 
24/06/2019 14:50:39 Xinerama is present and active (e.g. multi-head).
 
24/06/2019 14:50:39 Xinerama: number of sub-screens: 1
 
24/06/2019 14:50:39 Xinerama: no blackouts needed (only one sub-screen)
 
24/06/2019 14:50:39
 
24/06/2019 14:50:39 fb read rate: 180 MB/sec
 
24/06/2019 14:50:39 fast read: reset -wait  ms to: 10
 
24/06/2019 14:50:39 fast read: reset -defer ms to: 10
 
24/06/2019 14:50:39 The X server says there are 10 mouse buttons.
 
24/06/2019 14:50:39 screen setup finished.
 
24/06/2019 14:50:39
 
  
The VNC desktop is:      debian:0
+
次にパスフレーズ(パスワードみたいなものです)を聞かれるので、任意の文字列を設定します。
PORT=5900
+
<syntaxhighlight lang="bash">Enter passphrase (empty for no passphrase):</syntaxhighlight>
  
******************************************************************************
 
Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?
 
  
The scheme stores pixel data offscreen on the VNC viewer side for faster
+
再入力が求められるので、同じパスフレーズを入力します。
retrieval.  It should work with any VNC viewer.  Try it by running:
+
<syntaxhighlight lang="bash">Enter same passphrase again:</syntaxhighlight>
  
    x11vnc -ncache 10 ...
 
  
One can also add -ncache_cr for smooth 'copyrect' window motion.
+
以下のように表示されれば、OKです。
More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching
+
<syntaxhighlight lang="bash">Your identification has been saved in /home/test/.ssh/id_rsa.
 +
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
 +
The key fingerprint is:
 +
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX test@arch
 +
The key's randomart image is:
 +
+---[RSA 4096]----+
 +
|                |
 +
|                |
 +
|                |
 +
|                |
 +
|                |
 +
|                |
 +
|                |
 +
|                |
 +
|                |
 +
+----[SHA256]-----+</syntaxhighlight>
  
</syntaxhighlight>
 
  
VNC Viewerなどで接続してみてください。<br/>
+
以下のコマンドで、公開鍵の情報を設定します。
デスクトップが表示されたら、成功です。
+
<syntaxhighlight lang="bash">cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
 +
chmod 600 ~/.ssh/authorized_keys</syntaxhighlight>
  
  
Viewerを終了して気づいた方もいらっしゃるかもしれませんが、この状態だとViewerを終了するとX11vncも終了してしまいます。<br/>
+
次に秘密鍵(~/.ssh/id_rsa)をUSBメモリ等を利用してネットワークを経由させないで、どうにかクライアントに持ってきます。<br/>
ココらへんは、オプションで設定します。
+
(秘密鍵は削除したほうが良いのかな???インナーロック状態だから、JAF呼ばないと開けられないけどwww)<br/>
 +
クライアント側は、ターミナルアプリに依存するのでググってください…
  
  
先ずは、終了しないようにします。<br/>
+
次に「/etc/ssh/sshd_config」ファイルを編集してsshの設定を変更します。<br/>
終了しないようにするには、「-forever」オプションを指定します。<br/>
+
上の、sshの設定で大体予想は付くと思いますが…<br/>
<syntaxhighlight lang="bash">x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever</syntaxhighlight>
+
一気に設定せずに、確認しながら進めます。
  
あと…表示されているメッセージに基づいてオプションを設定していきます。
 
<syntaxhighlight lang="bash">24/06/2019 15:56:31 X DAMAGE available on display, using it for polling hints.
 
24/06/2019 15:56:31  To disable this behavior use: '-noxdamage'
 
24/06/2019 15:56:31
 
24/06/2019 15:56:31  Most compositing window managers like 'compiz' or 'beryl'
 
24/06/2019 15:56:31  cause X DAMAGE to fail, and so you may not see any screen
 
24/06/2019 15:56:31  updates via VNC.  Either disable 'compiz' (recommended) or
 
24/06/2019 15:56:31  supply the x11vnc '-noxdamage' command line option.</syntaxhighlight>
 
「-noxdamage」を指定したほうが良さそうです。<br/>
 
(正しく理解できていません…)
 
<syntaxhighlight lang="bash">x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -noxdamage</syntaxhighlight>
 
  
<syntaxhighlight lang="bash">24/06/2019 15:56:31 Wireframing: -wireframe mode is in effect for window moves.
+
先ずは、コメントを外して公開鍵認証を有効にします。<br/>
24/06/2019 15:56:31  If this yields undesired behavior (poor response, painting
+
【修正前】
24/06/2019 15:56:31  errors, etc) it may be disabled:
+
<syntaxhighlight lang="bash">#PubkeyAuthentication yes</syntaxhighlight>
24/06/2019 15:56:31    - use '-nowf' to disable wireframing completely.
+
【修正後】
24/06/2019 15:56:31    - use '-nowcr' to disable the Copy Rectangle after the
+
<syntaxhighlight lang="bash">PubkeyAuthentication yes</syntaxhighlight>
24/06/2019 15:56:31      moved window is released in the new position.
 
24/06/2019 15:56:31  Also see the -help entry for tuning parameters.
 
24/06/2019 15:56:31  You can press 3 Alt_L's (Left "Alt" key) in a row to
 
24/06/2019 15:56:31  repaint the screen, also see the -fixscreen option for
 
24/06/2019 15:56:31  periodic repaints.</syntaxhighlight>
 
「反応が悪い」「塗りつぶしエラー」などが出るのであれば、「-nowf」を設定した方が良いようです。<br/>
 
「-nowcr」は「ウインドウの移動等をしたあとの、長方形のコピーを無効化」って…よくわからないですね…<br/>
 
まぁ、エラーが出ない限りは設定する必要はなさそうです。<br/>
 
  
<syntaxhighlight lang="bash">24/06/2019 16:03:24 XFIXES available on display, resetting cursor mode
 
24/06/2019 16:03:24  to: '-cursor most'.
 
24/06/2019 16:03:24  to disable this behavior use: '-cursor arrow'
 
24/06/2019 16:03:24  or '-noxfixes'.
 
24/06/2019 16:03:24 using XFIXES for cursor drawing.
 
24/06/2019 16:03:24 GrabServer control via XTEST.</syntaxhighlight>
 
「XFIXES」を調べてみたけどがよくわからないな…<br/>
 
Wikiによると「いくつかのプロトコルの変更」と書かれている…<br/>
 
ということは、無視したほうが良いのかな?<br/>
 
無効にする場合は「-cursor arrow」か「-noxfixes」を設定するみたい。
 
  
<syntaxhighlight lang="bash">24/06/2019 16:03:24 Scroll Detection: -scrollcopyrect mode is in effect to
+
以下のコマンドで設定変更を反映させます。
24/06/2019 16:03:24  use RECORD extension to try to detect scrolling windows
+
<syntaxhighlight lang="bash">systemctl reload sshd</syntaxhighlight>
24/06/2019 16:03:24  (induced by either user keystroke or mouse input).
 
24/06/2019 16:03:24  If this yields undesired behavior (poor response, painting
 
24/06/2019 16:03:24  errors, etc) it may be disabled via: '-noscr'
 
24/06/2019 16:03:24  Also see the -help entry for tuning parameters.
 
24/06/2019 16:03:24  You can press 3 Alt_L's (Left "Alt" key) in a row to
 
24/06/2019 16:03:24  repaint the screen, also see the -fixscreen option for
 
24/06/2019 16:03:24  periodic repaints.</syntaxhighlight>
 
スクロール検出に関する設定???<br/>
 
「反応が悪い」「塗りつぶしエラー」などが出るのであれば、「-noscr」を設定した方が良いようです。<br/>
 
ただ…「定期的な再描画については『-fixscreen』を参照」とも言っているので、そちらをヘルプで参照したほうが良いかな?<br/>
 
  
<syntaxhighlight lang="bash">24/06/2019 16:03:24 XKEYBOARD: number of keysyms per keycode 10 is greater
 
24/06/2019 16:03:24  than 4 and 100 keysyms are mapped above 4.
 
24/06/2019 16:03:24  Automatically switching to -xkb mode.
 
24/06/2019 16:03:24  If this makes the key mapping worse you can
 
24/06/2019 16:03:24  disable it with the "-noxkb" option.
 
24/06/2019 16:03:24  Also, remember "-remap DEAD" for accenting characters.</syntaxhighlight>
 
どうやら自動的に「-xkb」モードに変更されているっぽい。<br/>
 
まぁそれはそれで良いと思うのだけど、メッセージが表示されるのは気持ち悪いので「-xkb」を設定してみる。
 
<syntaxhighlight lang="bash">x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -noxdamage -xkb</syntaxhighlight>
 
  
う~ん…色々設定が合って難しいなぁ~。<br/>
+
反映したら、sshでログインしてみます。<br/>
あと、必要そうなオプションは「-loop」です。<br/>
+
ログインできたら、改めて「/etc/ssh/sshd_config」ファイルを編集してパスワード認証を無効にします。<br/>
「[https://qtotter.wordpress.com/2013/08/23/%E3%80%90ubuntu%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E5%86%8D%E6%A7%8B%E7%AF%89%E3%80%91no-04-x11vnc%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/ 【ubuntuサーバー再構築】no.04 x11vncを設定してみる – 犬を一匹飼っている]」によると、「こけたらまた起動し直す」ようです。<br/>
+
【修正前】
 +
<syntaxhighlight lang="bash">#PasswordAuthentication yes</syntaxhighlight>
 +
【修正後】
 +
<syntaxhighlight lang="bash">PasswordAuthentication no</syntaxhighlight>
  
まぁ、色々あって最終的には…
 
<syntaxhighlight lang="bash">x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -noxdamage -xkb -wf -cursor most -fixscreen V=10 -fixscreen C=10 -loop</syntaxhighlight>
 
って感じでしょうか?<br/>
 
もし「キーリピート(キーを押しっぱなしにしたときに連続して入力)」を有効にしたい場合は「-repeat」を設定してください。
 
  
 +
以下のコマンドで設定変更を反映させます。
 +
<syntaxhighlight lang="bash">systemctl reload sshd</syntaxhighlight>
  
= X11vncの自動起動設定 =
 
「systemd」を使用して、x11vncをDebian起動時に起動するように設定します。<br/>
 
まずは、「/etc/systemd/system」ディレクトリに「x11vnc.service」ファイルを作成します。<br/>
 
以下のコマンドを実行して、ファイルを作成します。
 
<syntaxhighlight lang="bash">sudo nano /etc/systemd/system/x11vnc.service</syntaxhighlight>
 
内容は以下のとおりです。
 
<syntaxhighlight lang="bash">[Unit]
 
Description=x11vnc (Remote access)
 
After=network-online.target
 
  
[Service]
+
パスワードでログインしようとしてエラーになればOKです。
Type=simple
 
ExecStart=/usr/bin/x11vnc -display :0 -rfbauth /home/[ユーザーID]/.vnc/passwd -forever -noxdamage -xkb -wf -cursor most -fixscreen V=10 -fixscreen C=10 -loop
 
ExecStop=/bin/kill -TERM $MAINPID
 
ExecReload=/bin/kill -HUP $MAINPID
 
KillMode=control-group
 
Restart=on-failure
 
User=[ユーザーID]
 
  
[Install]
 
WantedBy=graphical.target</syntaxhighlight>
 
[ユーザーID](2箇所)を前段でログインしっぱなしにしたユーザーIDに変更してください。
 
  
そしたらサービスを起動してみます。<br/>
+
ついでと言ってはなんですが…<br/>
以下のコマンドを実行してください。
+
rootでのログインも無効にします。<br/>
<syntaxhighlight lang="bash">sudo systemctl start x11vnc</syntaxhighlight>
+
【修正前】
正常に実行できているか確認します。
+
<syntaxhighlight lang="bash">##PermitRootLogin prohibit-password</syntaxhighlight>
<syntaxhighlight lang="bash">sudo systemctl status x11vnc</syntaxhighlight>
+
【修正後】
以下の様に表示されれば問題ないかと思います。
+
<syntaxhighlight lang="bash">PermitRootLogin no</syntaxhighlight>
<syntaxhighlight lang="bash">test@debian:/etc/systemd/system$ sudo systemctl status x11vnc.service
 
● x11vnc.service - x11vnc (Remote access)
 
  Loaded: loaded (/etc/systemd/system/x11vnc.service; disabled; vendor preset: enabled)
 
  Active: active (running) since Mon 2019-06-24 17:15:29 JST; 2s ago
 
Main PID: 2761 (x11vnc)
 
    Tasks: 2 (limit: 4915)
 
  CGroup: /system.slice/x11vnc.service
 
          ├─2761 /usr/bin/x11vnc -display :0 -rfbauth /home/test/.vnc/passwd -forever -noxdamage -xkb -wf -cursor most -fixscreen V=10 -fixscreen C=10 -l
 
          └─2762 /usr/bin/x11vnc -display :0 -rfbauth /home/test/.vnc/passwd -forever -noxdamage -xkb -wf -cursor most -fixscreen V=10 -fixscreen C=10 -l
 
  
6月 24 17:15:30 debian x11vnc[2761]: 24/06/2019 17:15:30
 
6月 24 17:15:30 debian x11vnc[2761]: The VNC desktop is:      debian:0
 
6月 24 17:15:30 debian x11vnc[2761]: PORT=5900
 
6月 24 17:15:30 debian x11vnc[2761]: ******************************************************************************
 
6月 24 17:15:30 debian x11vnc[2761]: Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?
 
6月 24 17:15:30 debian x11vnc[2761]: The scheme stores pixel data offscreen on the VNC viewer side for faster
 
6月 24 17:15:30 debian x11vnc[2761]: retrieval.  It should work with any VNC viewer.  Try it by running:
 
6月 24 17:15:30 debian x11vnc[2761]:    x11vnc -ncache 10 ...
 
6月 24 17:15:30 debian x11vnc[2761]: One can also add -ncache_cr for smooth 'copyrect' window motion.
 
6月 24 17:15:30 debian x11vnc[2761]: More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching</syntaxhighlight>
 
「-ncache」オプションやってみ?みたいなメッセージが出ていますが…無視します。<br/>
 
試しに「-ncache 10」とか設定してつないでみてください。<br/>
 
特に問題なければそれでいいですが…RealVNCのVNC Viewerだと、超縦長な画面になります…。
 
  
= 雑感 =
+
以下のコマンドで設定変更を反映させます。
自動ログインでログインしっぱなしにする必要があるので、何となく「不安」を感じます。<br/>
+
<syntaxhighlight lang="bash">systemctl reload sshd</syntaxhighlight>
なんか、色々すればどうにかなるみたいですが…無理矢理感が否めないので、私はここまでとします。<br/>
 
  
 
= 参考サイト =
 
= 参考サイト =
[https://qtotter.wordpress.com/2013/08/23/%E3%80%90ubuntu%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E5%86%8D%E6%A7%8B%E7%AF%89%E3%80%91no-04-x11vnc%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B/ 【ubuntuサーバー再構築】no.04 x11vncを設定してみる – 犬を一匹飼っている]<br/>
+
[https://qiita.com/3no3_tw/items/4b5975a9f3087edf4e20 Raspberry Pi3のLAN外からのSSH接続設定方法 - Qiita]<br/>
 +
[https://qiita.com/suthio/items/2760e4cff0e185fe2db9 お前らのSSH Keysの作り方は間違っている - Qiita]<br/>
  
[[Category:Debian]]
+
[[Category:ssh]]
[[Category:x11vnc]]
+
[[Category:ArchLinux]]
{{DISPLAYTITLE:x11vnc/Debian9.9}}}
+
[[Category:鍵認証]]
 +
{{DISPLAYTITLE:sshのインストール}}

2019年7月26日 (金) 05:25時点における版

手順化するまでもないかなとも思いつつ…
細かい設定までは調べたことがなかったので、設定の情報を含めてインストールしてみます。

インストール

以下のコマンドを実行します。

pacman -S openssh

だーっと、インストールされます。
インストール自体はこれで完了ですが…
この状態ではssh接続できないので、サービスを起動します。

systemctl start sshd
systemctl enable sshd

念のため、正常に起動しているか確認します。

systemctl status sshd

「active (running)」と表示されていれば正常に起動しています。

設定

セキュリティを加味して、ポート番号など変更したい場合があるかと思います。
その場合、「/etc/ssh/sshd_config」ファイルで設定します。
基本的デフォルトの設定で動作しますので、変更したい場合は「sshd_config」内でコメントを外して設定します。

以下、私がよく変更する設定項目だけ上げていきます。

Port
ssh接続するポート番号を指定します。
#9022番ポートで接続したい場合
Port 9022
PermitRootLogin
rootアカウントでのログインの可/不可を設定します。
#rootアカウントでのログインを許可する場合
PermitRootLogin yes

#rootアカウントでのログインを許可しない場合
PermitRootLogin no
PubkeyAuthentication
公開鍵・秘密鍵を使用したログインの可/不可を設定します。
#公開鍵・秘密鍵を使用したログインを許可する場合
PubkeyAuthentication yes

#公開鍵・秘密鍵を使用したログインを許可しない場合
PubkeyAuthentication no
PasswordAuthentication
パスワードによるログインの可/不可を設定します。
#パスワードによるログインを許可する場合
PasswordAuthentication yes

#パスワードによるログインを許可しない場合
PasswordAuthentication no
X11Forwarding
X11ポートフォワードの可/不可を設定します。
#x11ポートフォワードを許可する場合
X11Forwarding yes

#x11ポートフォワードを許可しない場合
X11Forwarding no

公開鍵・秘密鍵を使用して接続する

セキュリティを加味して公開鍵・秘密鍵(鍵ペア)を作成して、認証する設定に変更します。
パスワード認証でもそれなりに長いパスワードにすれば良いのかもしれませんが、ブルートフォースアタックをされたりすれば、安全とは言い切れません。
鍵ペアを使用した認証は、「公開鍵をサーバーに設定」「秘密鍵を接続するクライアントに配布」することで、秘密鍵を持っているクライアントしか接続できなくなります。
秘密鍵を厳密に管理すれば、理論上安全と言えます。

以下の手順は実は手を抜いて、秘密鍵をサーバー側で作成しています。
(厳密に言えば、秘密鍵は秘密にしたいわけで…ネットワーク上に流すのははばかられます…)
なので、以下の手順は「まぁ…そこまでは気にしないよ」という方向けですwww。


以下のコマンドで鍵ペアを生成します。

ssh-keygen -t rsa -b 4096


鍵ペアの格納先を聞かれたら、任意に指定します。
(デフォルトでいい場合は、何も入力せずにEnterキーを押します)

Enter file in which to save the key (/home/test/.ssh/id_rsa):


次にパスフレーズ(パスワードみたいなものです)を聞かれるので、任意の文字列を設定します。

Enter passphrase (empty for no passphrase):


再入力が求められるので、同じパスフレーズを入力します。

Enter same passphrase again:


以下のように表示されれば、OKです。

Your identification has been saved in /home/test/.ssh/id_rsa.
Your public key has been saved in /home/test/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX test@arch
The key's randomart image is:
+---[RSA 4096]----+
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
|                 |
+----[SHA256]-----+


以下のコマンドで、公開鍵の情報を設定します。

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys


次に秘密鍵(~/.ssh/id_rsa)をUSBメモリ等を利用してネットワークを経由させないで、どうにかクライアントに持ってきます。
(秘密鍵は削除したほうが良いのかな???インナーロック状態だから、JAF呼ばないと開けられないけどwww)
クライアント側は、ターミナルアプリに依存するのでググってください…


次に「/etc/ssh/sshd_config」ファイルを編集してsshの設定を変更します。
上の、sshの設定で大体予想は付くと思いますが…
一気に設定せずに、確認しながら進めます。


先ずは、コメントを外して公開鍵認証を有効にします。
【修正前】

#PubkeyAuthentication yes

【修正後】

PubkeyAuthentication yes


以下のコマンドで設定変更を反映させます。

systemctl reload sshd


反映したら、sshでログインしてみます。
ログインできたら、改めて「/etc/ssh/sshd_config」ファイルを編集してパスワード認証を無効にします。
【修正前】

#PasswordAuthentication yes

【修正後】

PasswordAuthentication no


以下のコマンドで設定変更を反映させます。

systemctl reload sshd


パスワードでログインしようとしてエラーになればOKです。


ついでと言ってはなんですが…
rootでのログインも無効にします。
【修正前】

##PermitRootLogin prohibit-password

【修正後】

PermitRootLogin no


以下のコマンドで設定変更を反映させます。

systemctl reload sshd

参考サイト

Raspberry Pi3のLAN外からのSSH接続設定方法 - Qiita
お前らのSSH Keysの作り方は間違っている - Qiita