概要
- サーバーにrootでログインするのはセキュリティ上よくないので,新しいユーザーを作ってそれを使わないとSSHで接続できないようにしたい.
- パスワードログインも使えないようにしたい.
- (セキュリティ的に良くないけども)すでにrootで登録した公開鍵(authorized_keys)を新しいユーザーでもそのまま流用したい
- この記事では鍵生成はクライアント側で行っているという前提で話を勧めます.
環境
- サーバー(ホスト) : Ubuntu 20.04 LTS (ConoHa VPS)
留意事項
- 手順[3]で,新しいユーザーでSSHログインが可能になったのを確認するまでは,手順[4]には絶対に進まないでください.下手するとサーバーから締め出され二度とログインができなくなります
[1] 新しいユーザーを作成
rootでサーバーにログインし,以下のコマンドで新しいユーザーを作成してください.<username>
は使いたいユーザー名に置き換えてください.
adduser <username>
パスワードを二回聞かれますので,使いたいパスワードを入力し次へ進んでください.
その後,ユーザーのプロフィールに関する質問(フルネームや電話番号など)を聞いてくる場合がありますが,空欄のまま全部スキップしてください.最後に Is the information correct?
と聞かれたら,Yes
と入力して完了です.
作成したユーザーを,sudo
グループに追加します.
gpasswd -a <username> sudo
参考にさせていただいた記事
ubuntu ユーザを追加して sudo 権限をつける - Qiita
https://qiita.com/white_aspara25/items/c1b9d02310b4731bfbaa
[2] 公開鍵ファイルのコピー
新しく作成したユーザーに公開鍵のファイルをコピーします.
mkdir /home/<username>/.ssh
cp /root/.ssh/authorized_keys /home/<username>/.ssh/authorized_keys
先ほど作成した .ssh
フォルダと,コピーした公開鍵ファイルのパーミッションと所有者を変更します.これをしないと新しいユーザーでログインができません.
cd /home/<username>
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
chown -R <username> .ssh
念のため,ここでサービスを再起動しておきます.
systemctl restart sshd
これで新しいユーザーでも,同じ鍵ペアでログインが可能になります.
[3] 新しいユーザーでログインできるか確かめる
一度サーバーからログアウトし,先ほど作成したユーザーで公開鍵暗号方式でログインしてみます.クライアント側でOpenSSHを使っていて,.ssh/config
にホスト情報を記載している場合は, root@<ホスト名>
のrootの部分を新しいユーザー名に書き換えるだけでOKです.
[4] SSHの設定を変更する
新しいユーザーでログインできると確認できてから,サーバー側のSSH設定を変更します.ターミナル上で使えるテキストエディタを,サーバーに用意しておいてください.(ここではVimを使っています)
sudo vim /etc/ssh/sshd_config
sshd_configのファイルで,以下の設定が書かれている行を見つけ,それぞれ設定を書き換えてください.このファイルでは,先頭が#で始まる行はコメント扱いとなっていますので,コメントアウトされていたら先頭の#を取り除いてください.(以下の設定項目はconfigファイルとは順不同です)
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
サービスを再起動すると設定が反映されます.
sudo systemctl restart sshd
これでrootログインとパスワードを使ったログインができなくなります.
念のため,rootユーザーの公開鍵ファイルも削除しておきましょう.
su
Password: <rootユーザーのパスワード>
rm /root/.ssh/authorized_keys
exit
以上で一連の作業は終了となります.お疲れ様でした.