FreeBSD と言わず、マルチタスクOSでは、root のような管理者ユーザは目的のサーバーに対し直接リモートログインできないように設定されています。リモートホストの管理者になるためには、一旦、管理者グループに属するユーザーで通常ログインし、その後、su などのコマンドで管理者権限に昇格できるようにします。
こういう手間を掛けるのは、セキュリティー向上のため。
一般ユーザーを経由してログインすることにより、どのアカウント、つまり誰が、管理者になろうとしたかがログファイルに記録されるため、不都合が見つかった場合はログファイルを確認し、メンテナンスを行った人間にコンタクトすることが出来ます。root で直接リモートログインできてしまうと、ログイン元ホストにアカウント情報を確認しない限り、誰がシステム管理しようとしたのかがわかりません。
一般的に最近のOSでは、コンソール以外からは root で直接ログインすることはできません。
これはセキュリティー的には良いことなのですが、システム構築時には邪魔!例えば、旧型ホストのサービスを停止させて新しいホストに移行する場合、ユーザーデータを丸ごとコピーするのが一般的です。特に、旧ホストをダウンさせた後、同じIPアドレスを新しいホストに割り当てて運用する場合、事前にユーザーデータをコピーすることが必須です。この場合、全てのユーザーデータへアクセスする権限を持つのは通常 root のみ。こういうケースでは、今まで面倒ですが root で /home のアーカイブを作り、そのアーカイブを新ホストにネットワークコピーし、新ホストで解凍・展開していました。
これはこれで一般的で確実な方法なのですが、直接ネットワークコピーできれば中間アーカイブファイルを作らずに済みます。それにコピー元ホスト(旧ホスト)にアーカイブを作るだけの余裕がない場合は、中間アーカイブファイルを使う方法は使えませんから、データを直接転送することを考えたくなります。
今回ホストのリプレースに伴い、rsync を使ってユーザーファイルを夜中にコピーしてしまおうと考えています。rsync は Dropbox や OneDrive のようなもので、設定を行っておくと離れた場所にあるホストコンピュータ同士でも指定ディレクトリのファイルを同期させることが出来ます。自分自身のファイルだけなら root 権限は不要なのですが、/home 全部となると、両方のホストの root 権限が必要になります。rsync は ssh コネクションを使うようで、FreeBSD デフォルトの設定では、どちらか片方の root 権限しか使えなくて困ります。
こういうケースでは、システム構築中だけ ssh による root ログインを許可できると便利です。
頼るのはオンラインマニュアル。
ところが、オンラインマニュアルが長文過ぎて設定場所が見つからない!というか発見するのに時間が掛かりそう。
手抜きして、FreeBSD の設定に関して検索してみると
http://www.kishiro.com/FreeBSD/ssh.html
に情報がありました。こちらのサイトには、毎回、FreeBSD の細かい設定方法でお世話になっています。
設定ファイルは、
/etc/ssh/sshd_config
設定場所は、
#PermitRootLogin no
の行。これを、
PermitRootLogin yes
に修正して、sshd を再起動します。
一時的に、中途半端な設定マシンがグローバルインターネットに公開されることになりますので、ファイヤーウォールで、不特定ホストからのアクセスを遮断し、作業が終了したら設定を元に戻しておきます。
ちなみに、システム構築は、プライベートネットで行っているので、遠隔地のサーバーと rsync するためには、インターリンクのマイIP VPN接続を使用しました。