web-dev-qa-db-ja.com

バックアップのための最小限の権限を持つsshユーザーを追加します

Debianを実行している小さなサーバーがあり、バックアップ用にSSHアクセス権を持つアカウントを追加したいと思います。このアカウントのユーザーは、コンソールにアクセスできないようにする必要があります。彼はSCPを介してサーバー上の1つのディレクトリとの間でのみデータを転送(バックアップ)でき、それ以上は何もできません。これどうやってするの?

編集

私は解決策を見つけました。 https://superuser.com/questions/299036/can-i-create-an-ssh-user-which-can-access-only-certain-directory 別の質問が含まれていますが、解決策は正確です私の問題を解決します。

5
user4811

サーバー上の許可されたキーファイルで使用するコマンドを指定できます(これにより、ユーザーが指定したコマンドが上書きされます)。 man sshd(セクションAUTHORIZED_KEYSファイル形式)によると:

 command="command"
         Specifies that the command is executed whenever this key is used
         for authentication.  The command supplied by the user (if any)
         is ignored.  The command is run on a pty if the client requests
         a pty; otherwise it is run without a tty.  If an 8-bit clean
         channel is required, one must not request a pty or should spec‐
         ify no-pty.  A quote may be included in the command by quoting
         it with a backslash.  This option might be useful to restrict
         certain public keys to perform just a specific operation.  An
         example might be a key that permits remote backups but nothing
         else.  Note that the client may specify TCP and/or X11 forward‐
         ing unless they are explicitly prohibited.  The command origi‐
         nally supplied by the client is available in the
         SSH_ORIGINAL_COMMAND environment variable.  Note that this
         option applies to Shell, command or subsystem execution.  Also
         note that this command may be superseded by either a
         sshd_config(5) ForceCommand directive or a command embedded in a
         certificate.

authorized_keysファイルに入れます:

command="scp -t -- /var/tmp" ssh-rsa ......

これにより、クライアントでコマンドscp some_file user@server:/some/directoryが強制され、サーバーで/var/tmp/some_fileが作成されます。

ユーザーがサーバー上の~/.ssh/authorized_keysを上書きできないことを確認してください。

特定のクライアントからのみ許可するように、さらに制限を加えることができます。私が使う:

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="scp...
3
Zelda

そのユーザーのsftp-chrootを設定します。

私は(CentOS)を行う最も簡単な方法を見つけました:

  • ssh-init-scriptのクローン作成
  • そのsshd-instanceに特別な構成ファイルを使用します

構成では、次の設定を使用します。

PermitRootLogin no
PasswordAuthentication no
GSSAPIAuthentication no
AllowTcpForwarding no
PrintMotd no
PrintLastLog no
PidFile /var/run/sshd_sftp.pid
ChrootDirectory /opt/%u/chroot
Subsystem sftp internal-sftp
AllowGroups sftp

次に、/ opt/USERNAME/chroot/home/USERNAMEと、chrootの下にユーザーにアクセスを許可するその他のディレクトリを作成します。

ユーザーの公開鍵を/ home/USERNAME/.ssh/authorized_keysに配置します。

グループsftpをプライマリグループまたはセカンダリグループとしてそのユーザーに割り当てます。

完了。

1
Nils