ラズパイ3のセットアップ(6) (d) 仮想端末の整備

ラズパイ3もルートファイルシステムのハードディスクを変更したら安定しているように見えます。やはり問題はハードディスクのようです。
リモートからのパスワード無し接続ができるようになったので、次はターミナルソフトの整備だろうと思われます。仮想端末と呼ばれるジャンルに、 byobu / tmux / screen と言ったソフトがあって、byobu は tmux や screen のラッパープログラムとして機能するようです。
何が便利かと言うと、 ssh 等で直接リモートログインした状態で、そのままサーバー側のコマンドを利用して処理を行っていると何かの要因で通信路に障害が起きて、セッションが切れると実行中の処理も異常終了してしまうと思いますが、これらの仮想端末を利用して処理していると仮に通信路で障害が発生しても、再接続するだけで元の処理は継続して実行したままなので途中の経過表示も含めて元の続きを継続できます。
メリットを言い換えると、時間のかかる処理をリモートサーバー上で起動しておいて、操作するクライアント側では電源を落とす等の方法で接続を切ってしまい、時々接続して途中経過を確認したり、時間を置いてから最終結果の確認だけを行うことも可能になります。それと、複数の ssh 接続が必要なことも時としてありますが、例えば速度が遅く不安定なインターネットを経由した先のサーバー接続等を考えた場合には、直接の接続セッションは単一なのに複数の仮想端末内で色々な処理を並行して実行できるのは安心感があります。
そんな訳で byobu を導入します。一般的に byobu は通常 tmux を伴って仕事をするのですが、私の場合は昔から screen を利用していた経緯があって、他に設置のサーバーでも byobu と screen の組合せで稼働しています。混乱を防ぐためにも今回のラズパイ3も、この組合せで設定することにします。
これらの仮想端末ソフトには、その先にある操作目的のソフト、例えば bashにコマンドとして、そのまま文字を送る等以外に、手前にある仮想端末自体を制御するためのコマンド文字が存在します。例えば、新しく仮想端末を開いたり、実行中の仮想端末の画面を別のものに移動したりするのですが、エスケープ文字と呼ばれています。これが統一されているわけではなくて色々なので変更して統一しておかないと支障が出ます。

ソフトの導入と設定を始めます。

$ sudo apt install screen byobu

一度 byobu を起動すると .byobu ディレクトリが作成されます。
byobu の終了は、[F6]キー押下です。

$ byobu
[F6]

仮想端末を制御するエスケープ文字は、色々な意見があるのですが、emacs を使用していない私ですが、’Ctrl + b’ に変更しようと思います。
byobu 関連のコマンドにどのようなものがあるのか確認するため、byobu[Tab][Tab] キー を打鍵してみます。

$ byobu[Tab][Tab]
byobu byobu-janitor byobu-quiet byobu-status
byobu-config byobu-keybindings byobu-reconnect-sockets byobu-status-detail
byobu-ctrl-a byobu-launch byobu-screen byobu-tmux
byobu-disable byobu-launcher byobu-select-backend byobu-ugraph
byobu-disable-prompt byobu-launcher-install byobu-select-profile byobu-ulevel
byobu-enable byobu-launcher-uninstall byobu-select-session byobu_prompt_status
byobu-enable-prompt byobu-layout byobu-shell byobu_prompt_symbol
byobu-export byobu-prompt byobu-silent

まず screen のエスケープ文字を変更することにします。多分設定ファイルは、.byobu/keybindings だろうと思います。

$ vi .byobu/keybindings
source $BYOBU_PREFIX/share/byobu/keybindings/common
bindkey "^A"
escape ^Bb

続いて byobu のエスケープ文字を変更しますが、どのファイルなのかわからないので、直接 byobu を立ち上げて [F9] で変更用のダイアログを表示させ、3番目の ‘Change escape sequence’を選択します。そして入力欄に ‘b’ を打鍵します。

$ byobu
[F9] 表示されたダイアログの3番目を選択 [↓][↓]
'Change escape sequence' を選択して [Enter]
'b' を打鍵して [Tab] で、<Apply> を選択して [Enter]
[Tab]<Exit> を選択して [Enter]
[F6]

そして byobu の裏で screen が動作するように変更します。

$ byobu-select-backend

Select the byobu backend:
  1. tmux
  2. screen
Choose 1-2 [1]: 2

これで screen と連携した byobu の設定が完了しました。
操作した感じでは問題なさそうです。
ただし、このままでは sshでリモートログインしても自動的に byobu は起動しないし、 byobu を終了しても sshのログインのままになります。
sshリモートログインで byobu が自動的に起動して、 byobu の終了で自動的に sshのセッションも切断するように変更します。

$ byobu-enable

自動的に起動しないように戻すには、 byobu-disable コマンドを実行します。

 
これで仮想端末の設定は完了です。

ラズパイ3のセットアップ(5) (c) エディタとリモート接続の整備

次に利用が多い vimエディタの整備を行います。

vimエディタのフルセットをインストールします。

$ sudo apt install vim

シンタックスカラーリングを有効にしておきます。
19行1桁目のコメント を取り除きます。

$ sudo vi /etc/vim/vimrc
......  ......
" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
syntax on
" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
....  ....

 
次にリモートログイン関連の整備を行います。

常用しているノートPCからの ssh リモートログインのために公開鍵を設定します。
方法は、リモートで操作されるサーバーであるラズパイ側のpiユーザー.ssh/authorized_keyの中に、リモートで操作する側(常用しているノートPC)常用ユーザー公開鍵を追加します。

$ cat .ssh/id_rsa.pub   ....(常用しているノートPC側)

ssh-rsa AAAAB3NzaC1......AABAQDGfuahG9gbZlZk.........UfIO4hqf7uQJif/c1FPGwQYkGT7VAiksrtyBTOSEe/iWLfeVwjlS..........AkyAVJZKp0p/g+zO............9yF5+b6K9KP+mEXC.......w7HDsaif user@note-PC

追加する方法には色々な方法が考えられますが、文字列をコピーして viエディタで単純に追加編集する方法を示します。

$ vi .ssh/authorized_key   ....(操作される側のラズパイ)
......    ......
ssh-rsa AAAAB3NzaC1......AABAQDGfuahG9gbZlZk.........UfIO4hqf7uQJif/c1FPGwQYkGT7VAiksrtyBTOSEe/iWLfeVwjlS..........AkyAVJZKp0p/g+zO............9yF5+b6K9KP+mEXC.......w7HDsaif user@note-PC
....  ..   .....

 
そして次に動作検証を行います。

公開鍵が追加できたなら、公開鍵と秘密鍵で認証が行われることを確認します。

$ ssh pi@raspberrypi3
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug 28 20:21:10 2016 from note-PC
$

sshでの公開鍵認証ができたなら、ネット上からのアタックでパスワード認証での不正ログインを防ぐために、パスワード認証を禁止します。

$ sudo vi /etc/ssh/sshd_config
....  ..  .....
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
.......    .....

公開鍵と秘密鍵のペアでなければ接続できないことを確認します。 (publickey)

$ ssh root@raspberrypi3
Permission denied (publickey).