ここでは、新たなユーザーを作成し、そのユーザーがrootユーザーとしてログインできる設定を行います。迂回する形でrootユーザーとしてログインして、管理者権限の乗っ取り・サーバー乗っ取りのリスクを下げます。
この記事の設定の手順が多く、ターミナルも使い慣れていないので苦戦しました。
公開鍵の認証で困っている・ターミナルでひっかかっている方は、是非御一読ください。
全体的な流れ
詳細の手順の前に、第3章の「一般ユーザーを追加して公開鍵認証でSSHログインするまでの流れ」についてざっくり書いておきます。
はじめに一般ユーザーを追加します。
一般ユーザーが使えるコマンドをsudoで拡張します。
鍵を生成して、一般ユーザーでログインをします。
上記とこれまでの設定で、ConoHaのスタートアップガイドの設定は一通り終了します。
スタートアップガイドの流れ通りですが、やってみて悩んだ場所とか交えながら説明していきます。
詳細の手順
それでは、ここから詳細の手順についてです。スタートアップガイドに準じていきながら、実際に迷った部分の補足を加えながら説明していきたいと思います。
一般ユーザーを追加
まずは、ターミナルで一般ユーザーを追加しましょう。
ターミナルを利用して、VPSへroot権限のあるユーザーでログインします。
macのターミナルの利用方法は以下の記事も参考にしてみてください。
ログインしたら、以下のコマンドをターミナルに入力します。ユーザー名は追加したい名前を入力しましょう。
adduser [ユーザー名]
# adduser [ユーザー名]
Adding user `[ユーザー名]' ...
Adding new group `[ユーザー名]' (1000) ...
Adding new user `[ユーザー名]' (1000) with group `[ユーザー名]' ...
Creating home directory `/home/[ユーザー名]' ...
Copying files from `/etc/skel' ...
New password: [パスワード]
Retype new password: [パスワード]
passwd: password updated successfully
Changing the user information for [ユーザー名]
Enter the new value, or press ENTER for the default
Full Name []: ←ENTER
Room Number []: ←ENTER
Work Phone []: ←ENTER
Home Phone []: ←ENTER
Other []: ←ENTER
Is the information correct? [Y/n] y
コマンドを入力すると上記のように実行されます。
パスワードを入力し、次にFull Name[]: ~Other []:までENTERを押していき最後に「y」を入力して完了です。
以下のコマンドをターミナルに入力し、STEP.2で作成した一般ユーザー名・パスワードでVPSサーバーに接続します。
ssh [ユーザー名]@IPアドレス
rootアカウントの場合コマンド入力欄は「#」で始まりますが、一般ユーザーは「$」です。
一般ユーザーにsudoを設定
一般ユーザーを追加しただけでは、鍵認証の設定を行うことができません。ので、次にsudoを設定しましょう。
sudoを設定することで、一般ユーザーでもroot権限が必要なコマンド操作が利用可能になります。
ターミナルを利用して、VPSへroot権限のあるユーザーでログインします。
早速sudoを設定しますが、CentOSとUbuntuでは使用するコマンドが多少異なります。ちなみに、スタートガイドではCentOSのコマンドです。
外部リンク ご利用ガイド sudoを設定する
この記事で使用しているのはUbuntuなので、以下のコマンドをターミナルに入力します。
gpasswd -a [ユーザー名] sudo
ターミナルに入力をしてエンターを押すと、以下がターミナルに表示され完了です。
Adding user [ユーザー名] to group sudo
完了したら、正しくsudoの設定ができているか確認してみましょう。
設定した一般ユーザーでログインして、以下のコマンドを実行してみてください。いわゆる「システムをシャットダウン」するコマンドです。
shutdown -r now
おそらく、ターミナルに以下のような表示が出ると思います。
User root is logged in on sshd.
User root is logged in on tty1.
Please retry operation after closing inhibitors and logging out other users.
Alternatively, ignore inhibitors and users with 'systemctl reboot -i'.
端的に言うと「できないよ」と表示が出ます。
では、次に以下のコマンドをターミナルに入力してエンターを押してみましょう。
sudo shutdown -r now
初回はパスワードの入力が求められますが、上記のコマンドで、root権限を持つユーザーと同様にシステムシャットダウンができればOKです。
鍵を生成して一般ユーザーでSSHログイン
クライアントで鍵を生成してそれをサーバーに設置し、ターミナルから一般ユーザーでログインできるよう設定します。
あともう少しで完了します
はじめに、一般ユーザー用の鍵を生成します。
SSHの接続が解除された状態で、ターミナルから以下のコマンドを実行して、2048bitのRSA暗号を使用します。表示されるメッセージはすべてデフォルトで応答するので、そのままEnterキーを何回か入力していきます。
cd ~/.ssh
ssh-keygen -t rsa -b 2048
これにより、秘密鍵と公開鍵が作成されます。
以下の「chmod」コマンドを使って、公開鍵のアクセス制御のモードを変更します。
$ chmod 600 ~/.ssh/id_rsa.pub
この時も、SSHの接続を解除した状態のターミナルで行います。
「scp」コマンドで、公開鍵をSSHサーバーへ設置します。
$ scp ~/.ssh/id_rsa.pub [一般ユーザー名]@[IPアドレス]:~/.ssh/authorized_keys
これで設定は完了です。
最後に設定が完了したかのチェックをしましょう。ターミナルから一般ユーザーで接続し、問題なく接続できれば完了です。
ssh ユーザー名@IPアドレス
問題なく接続できたら、パスワード認証できないように変更しておきましょう。
以下の記事にある「パスワード認証を許可する設定変更」を参考にして「/etc/ssh/sshd_config」を編集しましょう。
関連記事 第3章:macのターミナルでSSH接続編「パスワード認証を可能にする設定変更」
これで終わりです!
さいごに
参考させていただいたQiitaの記事では、30分で完了・・・。ですが、初心者の自分で30分なんてのは到底無理でした(笑)
次回は、仕上げに接続許可のポート設定と、サーバーのイメージ保存を行います。
管理人がいじっている
VPSサーバー
ConoHa VPS
バックエンドやLinuxの知識が皆無の私が使用しているのは、VPSサーバーのConoHa VPSです。
この記事は、そんなVPSサーバーでNode.jsを色々いじってみた奮闘記です。
VPSサーバーは、一台のサーバー上にメモリなどのリソースやアプリケーションをユーザーごとに確保してくれるので、安定した環境を利用できます。また、root権限で利用できるため自由度が高く、CentOS、Ubuntu、Debian、FreeBSD、openSUSEのOSを使って、いろんな環境で開発・検証ができます。
そんな ConoHa VPS の特長は以下の通りです。
- シンプルな料金体系
- 最小構成なら月額682円(税込)で利用可能
- 豊富なテンプレートで環境構築も用意
- 初期費用・最低利用期間共になし
一般的な共用サーバーでは物足りない・・・。なんて方は豊富なテンプレートも揃ったConoHa VPSでトライしてみてください。
共用サーバーと比べ難易度は多少上がりますが、VPSサーバーはいろんなことができるのでめちゃ楽しくオススメです。
関連の記事
以下は「ConoHa VPS」の関連記事です。
- ConoHa VPSにNode.js公式チュートリアルで作ったフォルダ・ファイルでHello Worldしてみる
- Conoha VPSにVSCodeのプラグイン「Remote – SSH」でSSH接続
- ConoHa VPSでインスタンス構築 〜第5章:ポートの設定とイメージ保存編〜
- ConoHa VPSでインスタンス構築 〜第4章:一般ユーザーを追加して公開鍵認証でSSHログイン編〜
- ConoHa VPSでインスタンス構築 〜第3章:macのターミナルでSSH接続編〜
- ConoHa VPSでインスタンス構築 〜第2章:公開鍵認証を設定してセキュリティ対策編〜
- ConoHa VPSでインスタンス構築 〜第1章:サーバーの申し込みと初期設定編〜
参考サイト
参考ConohaにVPSを設置して、SSHログイン、ポート番号変更、rootログイン禁止までを30分で!Qiita