sshdの設定など、rc.confが存在しない、なければ書く

 ログでは、10.3のsshdはインストール時点で立ち上がっている設定だったように書いているのだが、11.1の設定はどうなっているのか?

 ブート時のメッセージでは、10.3では、'Starting sshd.' とあるのが、11.1では見当たらない。

 emacsが未導入なのだが、viは使える。viの使い方はうろ覚え。10.3の時はeeっていうのを使った。eeのカーソル移動がemacsと同じなので、こっちの方が馴染み易い。

etc/rc.confの確認。

《10.3》

hostname="freebsd.10.3.a"
ifconfig_em0="DHCP"
ifconfig_em0_ipv6="inet6 accept_rtadv"
sshd_enable="YES"
moused_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
sshd_enable="YES"
postgresql_enable="YES"

《11.1》の場合、'etc/rc.conf'が存在しない。

 

 10.3で、本当にrc.confが存在したかどうかは、再度10.3をインストールしてみるのが確実なのだが、その前に、FreeBSD11 sshd でググって見る。

FreeBSD 11 rootのssh接続の有効化 - Symfowareを参考に、11.1で、

  • まず、'/etc/rc.d/sshd restart'を実行してみた。→Cannot  'restart'  sshd. Set sshd_enable to YES in /etc/rc.conf or use 'onerestart'  instead of  'restart' .
  • '/etc/rc.d/sshd onerestart'を実行。→Performing sanity check on sshd configuration. No host key files found.
  • teratermのチャレンジング認証で、rootでログインしてみたが、ログインできず。

 この記事はrootでリモートログインする為のTips。

 説明している内容はシンプルで、 /etc/ssh/sshd_configを編集して、'#PermitRootLogin no' を 'PermitRootLogin yes' に修正して、'/etc/rc.d/sshd restart' でsshdを再起動すると、rootでリモートログインできる旨を解説している。

 

 インストール直後に '/etc/rc.conf' が存在しないというのが、どうも納得できない。

# freebsd-update fetch
# freebsd-update install
# pkg update

 を実行してみる。

freebsd-update fetch の時点で失敗。

f:id:muh:20180316183855p:plain

 同様の事を10.3で試してみる。

root@freebsd:~ # freebsd-update fetch
Looking up update.FreeBSD.org mirrors... none found.
Fetching public key from update.FreeBSD.org... done.
Fetching metadata signature for 10.3-RELEASE from update.FreeBSD.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... done.
Preparing to download files... done.
Fetching 1035 patches.....10....20....30....40....50....60....70....80....90....100....110....120....130....140....150....160....170....180....190....200....210....220....230....240....

250....260....270....280....290....300....310....320....330....340....350....360....370....380....390....400....410....420....430....440....450....460....470....480....490....500....510....520....530....540....550....560....570....580....590....600....610....620....630....640....650....660....670....680....690....700....710....720....730....740....750....760....770....780....790....800....810....820....830....840....850....860....870....880....890....900....910....920....930....940....950....960....970....980....990....1000....1010....1020....1030.. done.
Applying patches... done.
Fetching 76 files... done.

 最初の'Looking up update.FreeBSD.org mirrors... none found.'は同様なのだが、11.1はそこで諦めてしまっている。10.3の方はミラーを探してきて無事終了。

 せっかくなので、10.3の方は、freebsd-update install, pkg updateと処理を進めた。

 freebsd-update install が完了後、以下のメッセージ。

WARNING: FreeBSD 10.3-RELEASE is approaching its End-of-Life date.
It is strongly recommended that you upgrade to a newer
release within the next 1 month.
root@freebsd:~ # freebsd-update install
Installing updates... done. 

  pkg updateも無事終了

root@freebsd:~ # pkg update
Updating FreeBSD repository catalogue...
Fetching meta.txz: 100% 944 B 0.9kB/s 00:01
Fetching packagesite.txz: 100% 6 MiB 95.6kB/s 01:04
Processing entries: 100%
FreeBSD repository update completed. 28708 packages processed.

 10.3の方が特に問題なく動作するだけに、11.1に関わるのが面倒になってきた。

 VirtualBoxにFreeBSD11.1をインストール | atominux とかを参考にして、イチからインストールし直した方がいいのか?

 

 さてこれからどうするか?

 ISOイメージそのものにバグあったという事は、可能性は少ないがなくはない。

 とりあえず、rc.confがないのであれば、作ればよい。

root@freebsd:~ # cat /etc/rc.conf
hostname="freebsd.10.3.a"
ifconfig_em0="DHCP"
ifconfig_em0_ipv6="inet6 accept_rtadv"
sshd_enable="YES"
moused_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
sshd_enable="YES"
postgresql_enable="YES" 

   'sshd_enable="YES"'の記述がダブっているが、自分の設定ミスだろう。

 10.3の記述を参考にして、/etc/rc.confを作成後reboot。

/etc/rc.conf: 3: Syntax error: Untermminated quoted string

Enter full pathname of shell or RETURN for /bin/ah

 クォーテーションマークが一箇所抜けていた。修正してrebootしようとしたが、何故かファイルが書き込めなくなった。

FreeBSD覚書: シングルユーザモードで/etc以下を編集する必要がある場合の対処方法によれば、起動に失敗してシングルモードで立ち上がっている為。

 root権限で、'mount -u /' を実行すると、'/' 以下を書き込み可能でマウントするとの事。記事通りに実行したら、書き換え可能になった。

 オマジナイとしては非常に重要。. 

 rebootしたら、sshdが立ち上がり、teratermからmuhで接続できた。(rootは制限されている模様)

仮想コンソールから、 

# freebsd-update fetch
# freebsd-update install
# pkg update

を実行し成功。

 

 ユーザー設定。root以外のユーザーはインストール時に追加しているのだが、現状ではsuでrootになれない。リモートログインできないと不便で仕方がない。

 メモ: FreeBSDでsuを使うにはユーザをwheelグループに所属させる - 虎塚

 を参考に、'/etc/group' を編集。

 'wheel:*:0:root' の行を 'wheel:*:0:root,hoge' に修正。

 これで、RLoginから、muhでリモートログイン後、suできるようになった。

 

 あとするべき事は、

 ブログは、だらだら書くには楽でいいのだけど、レファレンス性に乏しいので、事実確認のできた内容については、サイトにまとめておいた方がいい。

 FreeBSDハンドブックを読む。困った時のGoogle頼みは手っ取り早くていいのだけど、対処療法に過ぎない。特定ユーザーをwheelに属させる方法にしても、/etc/passwdを編集する方法もある。一貫した正しい方法で設定しなければ、後で混乱を招く事になる。ネットで対処法を見つけた場合もハンドブックで裏を取る必要があるのだが、これがなかなか面倒で難しい。普段から読む癖をつけるしかない。またハンドブックの内容は若干抽象的過ぎて何がいいたいのか良く判らない。(正確には冗長性の低い文章、日本語訳がニュアンスを伝えきれていない事もあって意味が曖昧になっている場合が多いような気がする。)それでもハンドブックは目を通しておくべき。ネットで見つけた具体的な情報がハンドブックの説明に適っているかどうかは検証すべきだ。でなければ、一貫性がなくなってしまう。

 ポートフォワーディングをしっかり理解しておく事。

 リモートクライアント(teraterm, RLogin)からのSSHでの認証に仕組みを理解しておく事。

 vtが11からはデフォルトのターミナルモードになっている。リモートログインなら、あまり大きな意味は持たないが、一応さらっと調べておく。

 その後は、過去ログを参照しながら、shellと日本語まわりの設定。

 次回、このブログを更新する時、今回のサマリーをまとめて、考察を加えておく事。rc.confが始めからないのが当たり前なのかどうかを明確にしておく事。単に10.3の時にログに残し忘れただけの可能性が大きい。ハンドブックで当たるのが正しい。(デフォルトのテンプレートくらいありそうな気がするのだけど、、)