【Linux】SSH用ユーザを追加する

この記事ではLinuxサーバでSSH接続用ユーザを作成するサーバ側の手順をまとめたいと
思います。下記のようにEC2インスタンス上でLinuxを実行している場合、接続時の認証
に必要となる公開鍵と秘密鍵のキーペアを併せて作成する必要があります。この設定で
秘密鍵を持っている人だけがSSHでログインできる 状態となります。

 

 

 

OS    CentOS Linux release 7.9  

 

ユーザとグループの確認

作成前にユーザとグループを確認しておきたい場合は、下記コマンドを実行します。


■ 現在作成されているユーザを確認

    # cat /etc/passwd          


■ 現在作成されているグループを確認

    # cat /etc/group      



ユーザ作成

早速ユーザを作成していきます。今回はユーザのログインシェルを指定するオプション
とホームディレクトリを指定するオプションを付けて作成コマンドを実行してみます。
作成するユーザ名は testuser で作成してみます。

    # useradd -s /bin/bash -d /home/testuser -m testuser     

 

シェルについては下記にまとめていますのでよろしければご参照ください。

uasdldsau.hatenablog.com

 

ユーザのパスワードを設定

つづいて testuser のユーザのパスワードを設定したいと思います。パスワードを入力
しても画面には何も表示されませんが、これは仕様のため入力に問題はありません。

    # passws testuser     
    Changing password for testuser.
    New password:          ←パスワードを入力
    Retype new password:          ←確認のため再度パスワードを入力
    passwd: all authentication tokens updated successfully.

 

キーペアを生成

つづいて、公開鍵と秘密鍵のキーペアを作成していきます。

 

  1. 作成した testuser にスイッチします。

       # su - testuser     
       # id     


  2. RSAキーペアを作成します。

        # ssh-keygen -t rsa -b 2048     

    OSが Red Hat の場合は、鍵の長さは3072bit以上が推奨のようなので下記で作成します
        # ssh-keygen -t rsa -b 3072 -m PEM     


  3. つづいてキーペアのファイル名とパスフレーズを入力します。

    ファイル名がプロンプトに表示されているデフォルトのファイル名でよい
    場合は「空エンター」を入力して、次のパスフレーズの入力に進みます。

    パスフレーズを入力しても画面には表示されませんがこちらも仕様のため
    入力に問題はありません。秘密鍵を用いてサーバにSSHログインする際は
    ユーザのパスワードではなく、本パスフレーズを入力してログインします。

       Generating public/private rsa key pair.
       Enter file in which to save the key (/home/testuser/.ssh/id_rsa):
          
          
       Created directory '/home/testuser/.ssh'.
       Enter passphrase (empty for no passphrase):       ←パスフレーズを入力
          
          
       Enter same passphrase again:       ←確認のため再度パスフレーズを入力

    余談ですが、秘密鍵を用いずにユーザのパスワードでログインする方法も
    存在します。設定ファイル「/etc/ssh/sshd_config」に記載のパラメータを
    PasswordAuthentication yes」に変更してsshdを再起動することによって
    秘密鍵を用いずに、パスワードだけでログイン可能な設定が反映されます。

    この場合は、秘密鍵パスフレーズではなくユーザのパスワードでログイン
    することになりますが、セキュリティは公開鍵認証方式に比べると劣ります。


  4. 隠しディレクト.ssh に移動します。

       # cd .ssh     
       # pwd     


  5. 公開鍵(id_rsa.pub)を「authorized_keys」に追記します。

    「authorized_keys」は接続を許可する公開鍵を登録するファイルであり
    複数の公開鍵が記述される可能性もあるため、上書きではなく追記にて
    公開鍵を記載していきます。本ファイルを削除するとユーザはサーバに
    ログインすることができなくなります。

       # cat id_rsa.pub >> authorized_keys     


  6. 各種ディレクトリやファイルのパーミッションを変更します。

    .ssh
       # chmod 700 ~/.ssh     

    authorized_keys
       # chmod 644 authorized_keys     

    秘密鍵(id_rsa)
       # chmod 600 id_rsa     


以上でユーザとキーペアの作成は完了です。
作成したユーザにsudo権限を付与する場合は次の手順を実施します。

 

sudo権限の付与

作成した testuser にsudo権限を付与してみたいと思います。

 

  1. sudoersディレクトリに移動します。

       # cd /etc/sudoers.d     


  2. testuser の sudoersファイルを作成します。

    visudoコマンドを使用するとsudoersファイルがロックされることに加えて
    構文チェックも行われるため、安全にファイルを編集することができます。

       # visudo -f /etc/sudoers.d/testuser     


  3. 付与する権限の内容を記載します (今回は全てALLで記述したいと思います)

       testuser ALL=(ALL) ALL


  4. testuser の sudoersファイルが作成されたことを確認します。

       # ls -la /etc/sudoers.d/testuser     
       -r--r-----.  1 root root    24 Aug 13 12:00 testuser     


  5. 動作確認のため testuser にスイッチします。

       # su - testuser     


  6. sudo権限が必要なコマンドを実行してみます。

       # sudo less /var/log/messages     


  7. 3つの格言に目を通した後、記事の冒頭で設定したユーザのパスワードを入力します

       We trust you have received the usual lecture from the local System
       Administrator. It usually boils down to these three things:
    
           #1) Respect the privacy of others.
           #2) Think before you type.
           #3) With great power comes great responsibility.
        
       [sudo] password for testuser:   ←パスワードを入力
    

  8. ログを問題なく閲覧できれば動作確認は完了です。

 

 

以上、SSHユーザ作成とsudo権限付与についてのまとめでした。

最後までご覧いただきありがとうございました。