はじめに
VPS導入後、Ubuntu24.04のデフォルト状態ではSSH接続ができずに躓きかけたので、基本的な設定のメモ。
また、UTMが存在するLANから接続する場合、ファイアウォール設定(SSL)でフィルタリングされてしまうので注意
環境
Ubuntu24.04
rootユーザー
SSH接続時にrootユーザーは原則NGと考えてください。
Ubuntu24.04のデフォルト設定ではrootユーザーでパスワード認証できないようになっています
root@xXXX-XX-XX-XXX:~# vim /etc/ssh/sshd_config
# 36行目:コメント解除して[no]に変更するとrootログイン一切禁止します
# [prohibit-password]はパスワード認証を禁止します
PermitRootLogin prohibit-password
# 変更後はsshを再起動
root@xXXX-XX-XX-XXX:~# systemctl restart ssh
一般ユーザー
SSH接続するために、一般ユーザーを追加します。また、各種コマンド実行のため、sudoの権限設定を行います。
ユーザー追加
# ユーザー追加
# adduserとuseraddコマンドの間違いに注意。
# useraddの場合、-mオプションでユーザーのホームディレクトリが存在しない場合、作成する。
root@xXXX-XX-XX-XXX:~# useradd -m 新しいユーザー名
# パスワード設定
root@xXXX-XX-XX-XXX:~# passwd 新しいユーザー名
ユーザー 新しいユーザー名 のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: すべての認証トークンが正しく更新できました。
ユーザー一覧
root@xXXX-XX-XX-XXX:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
~~~~~
(省略)
~~~~~
NEWUSERNAME:x:USERID:GROUPID::/home/NEWUSERNAME:/bin/bash
/etc/passwd
は:
区切りで下記情報を保持しています
項目 | 作成された情報 | |
---|---|---|
1 | ユーザー名 | NEWUSERNAME |
2 | ダミーパスワード | x |
3 | ユーザーID | USERID |
4 | グループID | GROUPID |
5 | コメント | (空) |
6 | ホームディレクトリ | /home/NEWUSERNAME |
7 | ログインシェル | /bin/bash |
パスワード一覧
root@xXXX-XX-XX-XXX:~# cat /etc/shadow
root:$6$n.LBF.Pi$pGDNeMrJNjOgXlcjQdguA/tZTryDlrDR2LCYgCrlT3KDpAu55nGmoh.4.OHlVL0zDw/YQlpV4HM6zzKCd2hQH.:18307:0:99999:7:::
~~~~~
(省略)
~~~~~
NEWUSERNAME:$6$rwTX74Ir$YhhyryrTsbKdlAIWMKJqRQoQsK1TgelnQmHSpGmCDoXiGWQeQLTDtD73FEGur6tw5wZ50SbBo2QNVKEQUDcpV0:1830:0:99999:7:::
/etc/shadow
は:
区切りで下記情報を保持しています
項目 | 作成された情報 | |
---|---|---|
1 | ユーザー名 | NEWUSERNAME |
2 | パスワード | (ハッシュ値) |
3 | 最終パスワード変更日 | 1830(UNIXエポックタイムから経過日数) |
4 | パスワード変更可能日数 | 0 |
5 | パスワード有効期限 | 99999 |
6 | パスワード変更期間警告通知日 | 7 |
7 | アカウント無効日数 | (空) |
8 | アカウント有効期限 | (空) |
9 | 予約フィールド | (空) |
グループ一覧
root@xXXX-XX-XX-XXX:~# cat /etc/group
root:x:0:
~~~~~
(省略)
~~~~~
NEWUSERNAME:x:1002:
/etc/shadow
は:
区切りで下記情報を保持しています
項目 | 作成された情報 | |
---|---|---|
1 | ユーザー名 | NEWUSERNAME |
2 | ダミーパスワード | x |
3 | グループID | GROUPID |
4 | サブグループとして所属しているユーザー (複数の場合はカンマ区切り) |
(空) |
sudo権限設定
/etc/sudoers
を編集してsudo権限を設定します。
sudoersファイルを安全に編集するためにvisudo
コマンドを利用します。
visudoは同時編集が発生しないようにsudoersファイルをロックします。visudo
を実行している間はロックファイルとして/etc/sudoers.tmp
が作成されています
root@xXXX-XX-XX-XXX:~# visudo
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
+ ユーザー名 ALL=(ALL) ALL
SSH接続
windowsコマンドプロンプト または Teraterm などを利用してSSH接続が可能です。
パスワード認証を一時的に有効化し、公開鍵を~/.ssh/authorized_keys
に配置して公開鍵認証を有効化したらパスワード認証は再度無効化してください
認証鍵作成
Ubuntu22以降Open SSHが8.8となり、RSAが初期で無効化され、通常ではRSAの鍵は使用できなくなりました。-t
オプションを付けてアルゴリズムを指定します。
C:\Users\username> ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
# 保存ファイルフルパスを入力します
Enter file in which to save the key (C:\Users\GVDKUGR/.ssh/id_ed25519):
# パスフレーズを設定しない場合は何も入力せずにEnterキー
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
パスワード認証有効化(一時的)
公開鍵配置のため、一時的にパスワード認証を有効化します
# パスワード認証有効化
root@xXXX-XX-XX-XXX:~# vim /etc/ssh/sshd_config
- #PasswordAuthentication yes
+ PasswordAuthentication yes
# ssh再起動
root@xXXX-XX-XX-XXX:~# systemctl restart ssh
公開鍵設定
# ssh接続(パスワード認証)
C:\Users\username> ssh ユーザー名@IPアドレスまたはホスト名
ユーザー名@IPまたはホスト名 password:
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-49-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/pro
~~~
(省略)
~~~
This key is not known by any other names.
# 初回起動時は接続の確認があるので[yes]と入力してください
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
~~~
(省略)
~~~
Last login: Fri Dec 6 22:34:29 2024 from 61.24.84.42
# ディレクトリ作成・パーミッション設定
username@xXXX-XXX-XXX-XXX:~$ cd ~/.ssh
username@xXXX-XXX-XXX-XXX:~$ chmod 700 .ssh
# 公開鍵転送
C:\Users\username> scp 公開鍵のファイルパス ユーザー名@IPまたはホスト名:~/.ssh/authorized_keys(転送先ファイルパス)
# 公開鍵のパーミッション設定
username@xXXX-XXX-XXX-XXX:~$ chmod 600 ~/.ssh/authorized_keys
※他の公開鍵が設定済みの場合、上書きされてしまうので他の方法での公開鍵転送を検討してください。
パスワード認証無効化/公開鍵認証有効化
# パスワード認証無効化
root@xXXX-XX-XX-XXX:~# vim /etc/ssh/sshd_config
- #PubkeyAuthentication yes
- #AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
+ PubkeyAuthentication yes
+ AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
- PasswordAuthentication yes
+ PasswordAuthentication no
# ssh再起動
root@xXXX-XX-XX-XXX:~# systemctl restart ssh
ssh接続
# ssh接続(公開鍵認証)
C:\Users\username> ssh -i .\.ssh\公開鍵 ユーザー名@IPアドレスまたはホスト名
参考文献
rootユーザー
一般ユーザー
一般ユーザー/sudo権限設定
参考:visudoコマンドでsudoersファイルを編集する
参考:root用コマンドを特定ユーザーが実行できるようにするには