ユーザーがSSHを使用してSFTPを介してのみ接続することを制限し、同じユーザーがセキュアシェル端末にログインすることを許可しない方法はありますか?私はユーザーがSFTPクライアントを介して接続できるようにしたいだけです。それがすべてです。
答え1
うん、見てください。Ubuntu SFTPアカウント専用の操作方法:
ステップ1 - 限られたアカウント用のグループを作成する
この例では、「sftponly」という新しいグループを作成します。これを行うには、addgroupコマンドを使用するのが最善です。これは、新しいグループに未使用のグループ識別子(GID)を割り当てる役割を担うからです。
sudo addgroup sftponly
ステップ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 - ユーザーホームディレクトリの設定
さて、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 - /etc/shellsにアイテムを追加する
お気に入りのテキストエディタでrootとして/etc/shellsファイルを開き、一番下に次の行を追加します。
/usr/lib/sftp-server
ステップ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 sftponly
SSHサーバーに、その下の構成オプションをsftponly
システム・グループのすべてのメンバーに適用するように指示します。この行は、
ChrootDirectory %h
SSHサーバーにユーザーを自分のホームディレクトリに制限するように指示します(ここでは指定されたホームディレクトリが使用されます%h
)。
X11Forwarding no
ラインはAllowTcpForwarding no
それぞれ、ユーザーがサーバー上のグラフィックアプリケーションにアクセスし、システムを介して他のシステムに接続するのを防ぎます。この
ForceCommand internal-sftp
行は、ユーザーが自分のコマンドを実行するのを防ぎ、ユーザーがログインしたときに "internal-sftp"コマンドを実行してSSHサーバーのSFTPサーバーコンポーネントを使用するようにします。ステップ6 - SSHサーバーの再起動
Ubuntu / Debianユーザーは、次のコマンドを実行してSSHサーバーを再起動できます。
sudo /etc/init.d/ssh restart
それはすべてです。設定したユーザー名とパスワード、または秘密鍵(手順2で設定した場合)を使用して「sftp」コマンドを使用してログインできる必要があります。ここで説明されている設定を使用すると、手順1〜3を繰り返して新しいアカウントを設定できます。