条件に基づいて各ユーザーのSSHアクセスを制限します。

条件に基づいて各ユーザーのSSHアクセスを制限します。

ユーザーがSSHを使用してSFTPを介してのみ接続することを制限し、同じユーザーがセキュアシェル端末にログインすることを許可しない方法はありますか?私はユーザーがSFTPクライアントを介して接続できるようにしたいだけです。それがすべてです。

答え1

うん、見てください。Ubuntu SFTPアカウント専用の操作方法:

  1. ステップ1 - 限られたアカウント用のグループを作成する

    この例では、「sftponly」という新しいグループを作成します。これを行うには、addgroupコマンドを使用するのが最善です。これは、新しいグループに未使用のグループ識別子(GID)を割り当てる役割を担うからです。

    sudo addgroup sftponly
    
  2. ステップ2 - ユーザーアカウントを作成する

    たとえば、ユーザー名が「bob」のユーザーアカウントを作成し、ホームディレクトリを「/home/bob」に設定し、パスワード「pass」を指定します。

    ここでは、未割り当てのUIDをユーザーアカウントに割り当てるuseraddコマンドを使用します。

    ユーザーアカウントの作成:

    sudo useradd -d /home/bob -s /usr/lib/sftp-server -M -N -g sftponly bob
    

    パスワードを設定してください:

    sudo passwd bob 
    
  3. ステップ3 - ユーザーホームディレクトリの設定

    さて、Bobのための家を作り、ファイルを保管する場所を提供しましょう。次のコマンドを別の行に 1 つずつ入力します。

      sudo mkdir -p /home/bob/uploads /home/bob/.ssh 
      sudo chown bob:sftponly /home/bob/uploads /home/bob/.ssh 
      sudo chmod 700 /home/bob/.ssh
    

    最初の行は '/home/bob'、/home/bob/uploads'、および '/home/bob/.ssh' ディレクトリを作成します。

    2行目は/ home / bobディレクトリの所有者とグループをrootに設定します。ユーザーホームディレクトリのルートがrootユーザーに属していない場合、SSHサーバーは苦情を表示し、制限されたユーザーログインを拒否するため、これは重要なステップです。

    3行目は、制限されたユーザーがこれらのディレクトリを使用できるように、「/home/bob/uploads」と「/home/bob/.ssh」の所有者とグループを設定します。この例では、「uploads」サブディレクトリはファイルを保存するために使用され、「.ssh」サブディレクトリはユーザーの公開鍵を保存するために使用されます。

    このガイドのすべての手順を完了したら、ユーザー名とパスワードを使用してアカウントにログインできますが、認証にはより安全な公開鍵方法を使用することをお勧めします。

    使用したい秘密鍵と公開鍵が既にある場合は、ユーザーのホームディレクトリの.sshというサブディレクトリに公開鍵のコピーをアップロードするだけです。

    公開鍵ファイル名が「bob.pub」であると仮定すると、次のコマンドを実行してbobユーザーアカウントの公開鍵認証を設定します。

    cd /home/bob/.ssh cat bob.pub >> authorized_keys 
    chmod 700 authorized_keys 
    chown bob:sftponly authorized_keys 
    rm -r bob.pub
    
  4. ステップ4 - /etc/shellsにアイテムを追加する

    お気に入りのテキストエディタでrootとして/etc/shellsファイルを開き、一番下に次の行を追加します。

    /usr/lib/sftp-server
    
  5. ステップ5 - SSHサーバー構成ファイルの変更

    変更操作を開始するには、ルートとしてSSHサーバー構成ファイルを開きます。 Ubuntuシステムでは、このファイルは通常/etc/ssh/sshd_configです。他のディストリビューションとは異なる場合がありますので、事前に確認してください。

    その行を見つけて、Subsystem sftp /usr/lib/openssh/sftp-server次のように変更します。

    Subsystem sftp internal-sftp
    

    次に、ファイルの下部に次の行を追加します。

    Match group sftponly
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no
    ForceCommand internal-sftp
    

    この行は、Match group sftponlySSHサーバーに、その下の構成オプションをsftponlyシステム・グループのすべてのメンバーに適用するように指示します。

    この行は、ChrootDirectory %hSSHサーバーにユーザーを自分のホームディレクトリに制限するように指示します(ここでは指定されたホームディレクトリが使用されます %h)。

    X11Forwarding noラインはAllowTcpForwarding noそれぞれ、ユーザーがサーバー上のグラフィックアプリケーションにアクセスし、システムを介して他のシステムに接続するのを防ぎます。

    このForceCommand internal-sftp行は、ユーザーが自分のコマンドを実行するのを防ぎ、ユーザーがログインしたときに "internal-sftp"コマンドを実行してSSHサーバーのSFTPサーバーコンポーネントを使用するようにします。

  6. ステップ6 - SSHサーバーの再起動

    Ubuntu / Debianユーザーは、次のコマンドを実行してSSHサーバーを再起動できます。

    sudo /etc/init.d/ssh restart 
    

それはすべてです。設定したユーザー名とパスワード、または秘密鍵(手順2で設定した場合)を使用して「sftp」コマンドを使用してログインできる必要があります。ここで説明されている設定を使用すると、手順1〜3を繰り返して新しいアカウントを設定できます。

関連情報