ssh通信でrootによるログインを禁止する

久しぶりの更新ですね。

●最初に/なんでsshでrootログインをしてはいけないのか
傍受されていたら、なんでもできるスーパーユーザーの情報がもれちゃう。そうなったら、設定ファイルを書き換えられる、などのいたずらを受けることになります。これを防ぐために、一般ユーザーでログインするというのはもちろんですが、そもそもrootログインを禁止しちゃえばいいじゃない、ということでこの処理です。

以下は関連情報。rootになるにはどうしたらいいのか、等。
Mac OS X/suとsudoの違い - WEB開発初心者の成長記録


この処理をしておけば、複数の人とサーバー共有する場合でも、安心ですね。
では、どんな処理をすれば、rootログインを禁止できるのか。要は、sshの設定を変えれば良いので、sshの設定ファイルであるsshd_configを変更してしまえばいいのです。手順は簡単。たった、二手間です。

●処理手順
(1)sshd_configを修正
(2)sshdを再起動

sshd_configが見つからない!という方は、以下を試してみましょう。

シェルで、findコマンドを使ってみよう。
shell> find / -name sshd_config

※上記のコマンドは、「sshd_configっていうファイルを、ルートディレクトリ(最上部のディレクトリ)の全配下から探し出してね。」という命令です。

このとき、permission deniedとなる場合があります。その場合は、現在のユーザーではアクセス権限がないのが理由なので、rootに変身してからもう一度試してみてください(上記URL参照)。
ではでは、処理の内容です。

●処理内容
(1)vim等のエディタでsshd_configを開き、以下のように編集。

#PermitRootLogin yes

となっている部分を、コメントアウト(#のことね)をはずし、「yes」を「no」にする。

 PermitRootLogin no


(2)sshdコマンドの場所を確認して、再起動する。
(2-1)コマンドの場所を確認するコマンドwhichで、sshdの場所を確認します。

shell> which sshd
/usr/sbin/sshd


(2-2)修正したsshd_configに文法間違いがないかチェックします。

shell> /usr/sbin/sshd -t


(2-3)再起動します。

shell> /etc/init.d/sshd restart

※init.dの場所が上記と違う場合があります。シェルで「find / -name sshd」と打って、確認してみましょう。