手順 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.pubやid_ed25519.pubに保存されている内容)が入ります。 - 公開鍵は以下のような形式の文字列です:<鍵の種類> <公開鍵本体> <コメント>
- 鍵の種類:ssh-rsa(RSA暗号を使用する鍵)、ssh-ed25519(Ed25519(楕円曲線暗号)を使用する鍵)等
- コメントは任意で、通常は公開鍵を識別するための情報(例: ユーザー名やメールアドレス)が記載されます。この部分は必須ではありませんが、複数の鍵を管理する際に便利です。
- ここには、SSH公開鍵(通常は
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.comauthorized_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_keyschownコマンドは、ファイルやディレクトリの所有者(ユーザー)と所有グループを変更するためのコマンドです。この場合、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 sshdSSH接続をテスト
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グループは存在しません。
まとめ
- ユーザーを作成 (
adduser)。 - SSH設定を行い、公開鍵を
authorized_keysに追加。 - パーミッションを設定し、SSH接続をテスト。
- 必要に応じて
sudo権限を付与。
この手順で新しいユーザーのSSH接続を安全に設定できます。
コメント