手順 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.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
コマンドを使用できるよう設定されています。
sudo
wheel
グループの存在を確認する方法
グループが存在するかどうかを確認するには、以下のコマンドを使用します:
例) sudoグループの存在を確認する
getent group sudo
例) wheelグループの存在を確認する
getent group wheel
出力が何も返されない場合、sudo
wheel
グループは存在しません。
まとめ
- ユーザーを作成 (
adduser
)。 - SSH設定を行い、公開鍵を
authorized_keys
に追加。 - パーミッションを設定し、SSH接続をテスト。
- 必要に応じて
sudo
権限を付与。
この手順で新しいユーザーのSSH接続を安全に設定できます。
コメント