Duplicityを使用してサーバーをコンピューターにバックアップする必要があります。
duplicity /etc sftp://[email protected]//home/backup
これを行う前に、以下を実行してパスワードなしのアクセスを許可する必要があります。
$ ssh-keygen
$ ssh-copy-id [email protected]
$ ssh [email protected]
私の質問は、生成された公開キーでこのSFTP転送だけにコマンドを制限するにはどうすればよいですか?
command="restrict to sftp",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAA…
また、動的IPアドレスを使用しているため、IPが変更されるたびに「既知のホストが見つからない」問題を解決するにはどうすればよいですか?
質問1
私の質問は、生成された公開キーでこのSFTP転送だけにコマンドを制限するにはどうすればよいですか?
これを行うには2つの方法があります。
この方法では、SSHデーモンsshd
内にSFTP機能を設定します。これは、/etc/ssh/sshd_config
構成ファイルによって制御されます。 注:これにより、ユーザーbackup
がサーバーへのSFTPのみを許可されるように制限されます。
# /etc/ssh/sshd_config
Subsystem sftp internal-sftp
## You want to put only certain users (i.e users who belongs to sftpusers
## group) in the chroot jail environment. Add the following lines at the end
## of /etc/ssh/sshd_config
Match User backup
ForceCommand internal-sftp
このメソッドには、sshd_config
ファイルへの変更は含まれません。質問ですでに述べたcommand=
機能を使用して、ユーザー+ SSHキーを単一のコマンドに制限できます。秘訣は、どのコマンドを含めるかです。このcommand=
行にSFTPサーバーを配置できます。これは、sshd_config
ファイルでSFTPサーバーを設定するのと同じ効果があります。
# User backup's $HOME/.ssh/authorized_keys file
command="/usr/libexec/openssh/sftp-server" ssh-dss AAAAC8ghi9ldw== backup@Host
注:ユーザーが~/.ssh/authorized_keys
への書き込みアクセス権を持っている場合、ユーザーはそれを読み取りまたは変更できます。たとえば、ダウンロードして編集し、commmand=...
を取り除いて再アップロードして、シェルを含む自由なコマンドアクセスを許可することができます。ユーザーが~/.ssh
への書き込みアクセス権を持っている場合は、ファイルのリンクを解除して再作成するか、またはchmod
で書き込みアクセス権を付与することもできます。次のように、~/.ssh/authorized_keys
ファイルをユーザーが書き込みできない場所に置くなど、多くの可能な解決策が存在します。
Match Group sftponly
AuthorizedKeysFile /etc/ssh/authorized_keys/%u
質問2
また、動的IPアドレスを使用しているため、IPが変更されるたびに「既知のホストが見つからない」問題を解決するにはどうすればよいですか?
これはトリッキーですが、from=
ファイル内のauthorized_keys
機能を使用しても実行できます。ここでは、ホストsomehost.dyndns.org
からのアクセスのみを制限しています。
from = "somehost.dyndns.org"、command = "/ usr/libexec/openssh/sftp-server"、no-port-forwarding、no-X11-forwarding、no-agent-forwarding、no-pty ssh-dss AAAAC8ghi9ldw == backup @ Host
command=
の後の追加設定は、SSHキーの使用をさらに制限するため、同様に重要です。
機能の内訳
from='hostname1,hostname2,''
-指定されたIPまたはホスト名パターンからのアクセスを制限しますcommand='command'
-認証後に指定されたコマンドを実行しますno-pty
-ptyを割り当てません(インタラクティブログインを許可しません)no-port-forwarding
-ポート転送を許可しませんno-X11-forwarding
-ユーザーはディスプレイX11 GUIを削除できませんno-agent-forwarding
-ユーザーはこのホストを介して他の内部ホストに転送できません「不明なホストが見つかりません」に関するメッセージを取り除くには、次のように接続するときにこのSSHオプションをクライアントに追加します。
$ ssh -o StrictHostKeyChecking=no ....
このスイッチの詳細については、ssh_config
のマニュアルページを参照してください。
上記の両方のソリューションでは、/etc/passwd
ファイルでもこのユーザーのシェルを制限することにより、backup
ユーザーをロックダウンする必要があります。通常はscponly
に設定しますが、これには他の選択肢もあります。これを行う方法については、「 SCP用のシェルが必要ですか? 」というタイトルのU&L Q&Aを参照してください。
上記の#1で概説されているように、/sbin/nologin
からchroot機能を使用することを選択した場合、sshd_config
の使用も使用できます。 。ただし、#2で概説されている方法を使用することを選択した場合、scponly
または何か他のものを使用する必要があります/etc/passwd
のユーザーのシェル。
このユーザーに一連のコマンドを公開する必要がある場合は、これも実行できます。そのようなスクリプトを作成します、/home/backup/commands.sh
:
#!/bin/sh
case $SSH_ORIGINAL_COMMAND in
"diskspace")
df -h
;;
"dirlist")
ls -1
;;
"Apache_restart")
/etc/init.d/Apache restart
;;
*)
echo "Unknown command"
esac
次に、authorized_keys
ファイルを次のように設定します。
command="/bin/sh /home/user/commands.sh" ssh-dss AAAAC8ghi9ldw== user@Host
backup
ユーザーは、これらのコマンドを次のように実行できます。
# diskspace
$ ssh -q user@remote_Host diskspace
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/dev-root 39G 2.2G 35G 6% /
# dirlist
$ ssh -q remote_Host dirlist
commands.sh
dump.sql