MENU
Language

Linuxサーバーで新規ユーザーを作成し、そのユーザーでSSH接続できるようにする手順(鍵認証)

目次

手順 1: 新規ユーザーを作成

ユーザーを作成する *管理者権限でログイン

sudo adduser <username>

確認 ユーザーが作成されると、以下のようにホームディレクトリも自動的に作成されます。

/home/<username>

ユーザー一覧の確認(任意)

パターン1. ローカルユーザーを確認したいとき/etc/passwd ファイルを確認

Linuxシステムの全ユーザーアカウント情報は /etc/passwd ファイルに保存されています。このファイルを表示することで、ユーザー一覧を確認できます。

cat /etc/passwd

出力例:

root:x:0:0:root:/root:/bin/bash
user1:x:1000:1000::/home/user1:/bin/bash
guest:x:1001:1001::/home/guest:/bin/bash
  • フィールドの意味(: で区切られている)
    • 1列目: ユーザー名
    • 2列目: パスワード(x は暗号化されたパスワードが /etc/shadow に保存されていることを意味します)
    • 3列目: ユーザーID(UID)
    • 4列目: グループID(GID)
    • 5列目: コメント(例: ユーザーの説明)
    • 6列目: ホームディレクトリのパス
    • 7列目: デフォルトのシェル

ユーザー名だけをリストしたい場合
ユーザー名のみを表示したい場合は、awk を使って /etc/passwd から抽出します。

awk -F: '{ print $1 }' /etc/passwd

出力例:

root
user1
guest

パターン2. 全システムユーザー(ローカル+外部)を確認したいとき

ローカルの /etc/passwd の情報に加えて、NIS、LDAP、Active Directory などの外部データベースに登録されているユーザー情報も含めて表示します。

getent passwd

出力例:

root:x:0:0:root:/root:/bin/bash
user1:x:1000:1000::/home/user1:/bin/bash
guest:x:1001:1001::/home/guest:/bin/bash

手順 2: 新規ユーザーのSSH設定

SSH接続のためには、ユーザーの ~/.ssh ディレクトリを設定し、公開鍵を配置する必要があります。

ユーザーのホームディレクトリに移動して.ssh ディレクトリを作成

特定のユーザー(<username>)として、該当ユーザーのホームディレクトリ内に「.ssh」ディレクトリを作成します。これはSSHキーを保存するための標準ディレクトリです。

sudo -u <username> mkdir -p /home/<username>/.ssh

ディレクトリの権限を設定

sudo chmod 700 /home/<username>/.ssh

このコマンドは、/home/<username>/.ssh ディレクトリのアクセス権を設定します。

  • chmod: ファイルやディレクトリのパーミッションを変更するコマンド。
  • 700: パーミッションの設定値。以下の権限を示します:
    • 7(所有者): 読み取り(r)、書き込み(w)、実行(x)のすべてを許可。
    • 0(グループ): 何も許可しない。
    • 0(その他): 何も許可しない。
    • 700はディレクトリに適用するのが一般的です。ファイルの場合、所有者だけが実行できるようになります。
sudo chown <username>:<username> /home/<username>/.ssh

このコマンドは、/home/<username>/.ssh の所有者とグループを設定します。

  • chown: ファイルやディレクトリの所有者(オーナー)とグループを変更するコマンド。
  • <username>:<username>:
    • 最初の <username> は所有者を指定。
    • コロン(:)の後の <username> はグループを指定。

公開鍵を authorized_keys に配置

クライアント側で公開鍵を準備します(例: ~/.ssh/id_rsa.pub)。

公開鍵を取得する手順は下記を参考にしてください。
AWS のEC2などを利用している場合は、AWS公式ドキュメント を参照してください。

公開鍵の内容をサーバーにコピーします:

echo "<public_key>" | sudo tee /home/<username>/.ssh/authorized_keys

例)

echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQE..." | sudo tee /home/newuser/.ssh/authorized_keys

コマンド構造:

echo "<public_key>"

  • 役割: 公開鍵の内容を標準出力(ターミナル)に表示します。
  • <public_key>:
    • ここには、SSH公開鍵(通常はid_rsa.pubid_ed25519.pubに保存されている内容)が入ります。
    • 公開鍵は以下のような形式の文字列です:<鍵の種類> <公開鍵本体> <コメント>
    • 鍵の種類:ssh-rsa(RSA暗号を使用する鍵)、ssh-ed25519(Ed25519(楕円曲線暗号)を使用する鍵)等
    • コメントは任意で、通常は公開鍵を識別するための情報(例: ユーザー名やメールアドレス)が記載されます。この部分は必須ではありませんが、複数の鍵を管理する際に便利です。
ssh-ed25519 AAAAC3NzaZZZZDI1NTE5AAAAIExAMZZZ2xptnG87hPhe3oiQjN example@domain.com

|(パイプ)

  • 役割: 左側のコマンドの出力を右側のコマンドの入力として渡します。
  • ここでは、echoコマンドの出力(公開鍵の文字列)をteeコマンドに渡します。
  • tee:
    • 標準入力を受け取り、指定されたファイルにその内容を書き込みます。
    • sudo:
      • 管理者権限で/home/<username>/.ssh/authorized_keysにアクセスできるようにします。
    • /home/<username>/.ssh/authorized_keys:
      • SSH認証のために公開鍵を保存するファイルです。このファイルに公開鍵を記録することで、ユーザーが鍵ベースの認証でログインできるようになります。

ファイルの内容を確認

cat コマンド等で内容を表示

cat /home/<username>/.ssh/authorized_keys
  • 出力例:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExAMZZZ2xptnG87hPhe3oiQjN example@domain.com
ssh-rsa AAAAB3Nza... another@example.com

authorized_keys のアクセス権限を設定

sudo chmod 600 /home/<username>/.ssh/authorized_keys

アクセス権限の意味

600は以下を意味します:

  • 6(所有者): 読み取り (4) と書き込み (2) を許可。
  • 0(グループ): 権限なし。
  • 0(その他のユーザー): 権限なし。
  • 600はファイル専用。ディレクトリに設定すると、所有者であっても中身を閲覧できません。

これにより、ファイルの所有者だけがそのファイルを読み書きできるようになります。
SSH認証では、authorized_keysに保存された公開鍵がサーバーへのログイン認証に使用されます。このファイルが他のユーザーにアクセス可能だとセキュリティ上のリスクがあります。chmod 600を設定することで、ファイルの不正アクセスを防ぎます。

authorized_keys所有者(ユーザー)と所有グループを変更

sudo chown <username>:<username> /home/<username>/.ssh/authorized_keys

chownコマンドは、ファイルやディレクトリの所有者(ユーザー)と所有グループを変更するためのコマンドです。この場合、authorized_keysファイルの所有者を指定されたユーザーに設定しています。

構文の詳細

  • <username>:<username>:
    • 最初の<username>: ファイルの所有者。
    • 2つ目の<username>: 所有グループ。
    • 多くのLinuxディストリビューションでは、ユーザーを作成したときに同名のグループが自動的に作成されます(例: ユーザー alice に対して alice グループが作成される)。
  • /home/<username>/.ssh/authorized_keys: 所有者を変更したい対象ファイルのパス。

authorized_keysファイルの所有者がログインするユーザーでなければ、SSHはこのファイルを使用して認証を行えません。そのため、正しいユーザーに所有権を設定する必要があります。また、これにより他のユーザーがファイルを操作するリスクを減らせます。

手順 3: SSH接続の確認

SSHサーバーが稼働していることを確認

sudo systemctl status sshd

必要に応じてSSHサービスを再起動します:

sudo systemctl restart sshd

SSH接続をテスト

SSHで接続するには、次の形式のコマンドを使用します:

ssh -i <秘密鍵ファイル> <ユーザー名>@<ホスト名またはIPアドレス>

トラブルシューティング

接続できない場合、サーバーの /etc/ssh/sshd_config を確認し、以下の設定を有効にします。

PubkeyAuthentication yes
PasswordAuthentication no  # パスワード認証を無効にする場合

設定変更後はSSHを再起動してください。

sudo systemctl restart sshd

オプション: 新規ユーザーに管理者権限を付与

新しいユーザーに sudo 権限を付与する場合、以下を実行します。

ユーザーを sudo グループに追加:

sudo usermod -aG sudo <username>

権限の確認:

groups <username>

sudo が含まれていれば成功です。

補足:sudoグループについて

sudoグループは、システム管理者権限を持つユーザーを管理するために使用されるグループです。このグループに所属しているユーザーは、sudoコマンドを使用して管理者権限(root権限)でコマンドを実行できます。

sudoグループは多くのLinuxディストリビューションでデフォルトで存在します。ただし、存在するかどうかは利用しているLinuxディストリビューションやその設定によります。

sudoグループがデフォルトで存在するLinuxディストリビューション:

  • Ubuntu、Debian、Linux Mint

sudoグループが存在しない可能性のあるディストリビューション:

  • CentOS / RHEL / Fedora:
  • sudoグループがない場合もあります。
  • これらではwheelグループが同様の役割を果たします。
  • wheelグループに属するユーザーがsudoコマンドを使用できるよう設定されています。

sudowheelグループの存在を確認する方法

グループが存在するかどうかを確認するには、以下のコマンドを使用します:

例) sudoグループの存在を確認する

getent group sudo

例) wheelグループの存在を確認する

getent group wheel

出力が何も返されない場合、sudowheelグループは存在しません。

まとめ

  1. ユーザーを作成 (adduser)。
  2. SSH設定を行い、公開鍵を authorized_keys に追加。
  3. パーミッションを設定し、SSH接続をテスト。
  4. 必要に応じて sudo 権限を付与。

この手順で新しいユーザーのSSH接続を安全に設定できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

AIアーティスト | エンジニア | ライター | 最新のAI技術やトレンド、注目のモデル解説、そして実践に役立つ豊富なリソースまで、幅広い内容を記事にしています。フォローしてねヾ(^^)ノ

コメント

コメントする

目次