Debianを実行している小さなサーバーがあり、バックアップ用にSSHアクセス権を持つアカウントを追加したいと思います。このアカウントのユーザーは、コンソールにアクセスできないようにする必要があります。彼はSCPを介してサーバー上の1つのディレクトリとの間でのみデータを転送(バックアップ)でき、それ以上は何もできません。これどうやってするの?
編集
私は解決策を見つけました。 https://superuser.com/questions/299036/can-i-create-an-ssh-user-which-can-access-only-certain-directory 別の質問が含まれていますが、解決策は正確です私の問題を解決します。
サーバー上の許可されたキーファイルで使用するコマンドを指定できます(これにより、ユーザーが指定したコマンドが上書きされます)。 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...
そのユーザーのsftp-chrootを設定します。
私は(CentOS)を行う最も簡単な方法を見つけました:
構成では、次の設定を使用します。
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をプライマリグループまたはセカンダリグループとしてそのユーザーに割り当てます。
完了。