LoginSignup
0
0

rootしかいないLinuxにユーザーを追加し、SSHをセットアップする

Last updated at Posted at 2023-07-19

ConohaVPSを契約しDebian12を使用し始めたが、初期状態ではrootしかユーザーがいないため、ユーザーを追加する。
ついでに外部からSSHで接続できるように、設定を行う。

ユーザーはcoushとしているので、自身の環境に合わせて適時置換して欲しい。

ユーザーの作成

※以下コマンドはrootでログインした状態で実行する。

bash
# ユーザーを追加する
useradd coush -m -U

# パスワードを設定する
passwd coush

# sudo を許可
usermod -aG sudo coush

公開鍵の作成

外部からSSHでログインできるようにしたいが、パスワードでログインできるようになっているとセキュリティ的によろしくない。そこで暗号鍵でのみログインできるように設定を行う。

まずはWindowsで鍵の作成を行う。なおこれは自分自身で1つ作って使いまわすとよい。鍵自体にはPC名・ID・メールアドレス・IPアドレスなどの情報は一切含まれないため、PCを何台も持っている場合は1つ作って全てのPCにコピーするといい。

WindowsのPowershell、Terminalから以下のコマンドを実行する。

Windows PowerShell
ssh-keygen

実行すると、ユーザーフォルダ"C:\Users\coush"の下に".ssh"というフォルダができ、中に id_rsa と id_rsa.pub にできる。
いずれも中身はテキストで、公開鍵である id_rsa.pub は見られても大丈夫だし、あちこちにコピーしていい。ただし秘密鍵であるid_rsaは決して盗まれてはいけない。

Linuxに公開鍵を登録

さてLinuxに戻り、以下のコマンドを実行し、公開鍵を登録して秘密鍵でSSHログインができるようにする。rootユーザーのまま行う。
公開鍵をファイルで転送するのは面倒なので、ターミナルからechoを使って中身のテキストを直接ファイルに書き込む。

bash
mkdir /home/coush
mkdir /home/coush/.ssh

# 公開鍵を登録する
echo "id_rsa.pubの中身のテキスト" > /home/coush/.ssh/authorized_keys

# パーミッションをcoushに変更
chown coush: /home/coush -R

SSHの設定変更

あとは、SSHの設定を変更する。sshが入っていなければ先に入れておく。

bash
apt install sshd -y
nano /etc/ssh/sshd_config.d/default.conf

内容を以下のように書き換える。

/etc/ssh/sshd_config.d/default.conf
# 鍵認証でのログインを行う
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# rootのログインを無効にする
PermitRootLogin no
# パスワード認証を無効にする
PasswordAuthentication no

設定を反映するには、sshを再起動する。

service sshd restart

外部からSSHでログインできることを確認したら、ユーザーの追加はこれで完了。

PowerShell
ssh coush@xxx.xxx.xxx.xxx

パスワードを入れなくて済むのはめちゃめちゃ楽である。

一連の処理を行うスクリプト

以下の内容をadduser.shなど、適当な名前を付けて保存する。

adduser.sh
#!/bin/bash

# ユーザーの作成
useradd $1 -m -U

# パスワード登録
echo "ユーザー $1 のパスワードを登録してください"
passwd $1

# sudo を許可
usermod -aG sudo $1

# ホームフォルダの作成
mkdir /home/$1
mkdir /home/$1/.ssh

# SSH認証鍵の登録
echo "id_rsa.pubの中のテキスト" > /home/$1/.ssh/authorized_keys

# パーミッションの変更
chmod 700 /home/$1/.ssh
chmod 600 /home/$1/.ssh/authorized_keys
chown $1: /home/$1 -R

# SSH認証方式変更 公開鍵認証 有効・rootログイン禁止・パスワードログイン禁止
echo "
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin no
PasswordAuthentication no
" > /etc/ssh/sshd_config.d/default.conf

#処理終了
echo "ユーザー $1 の登録が完了しました"

rootで以下のようにして実行する。

bash
bash adduser.sh coush
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0