問題は、パスワードを使用せずにコンピュータAからコンピュータBにいくつかのSSHコマンド(またはスクリプト)を実行したいということです。
例:
ssh apple@computerB 'poweroff'
ssh apple@computerB "killall firefox; systemctl enable apache; firefox"
ssh apple@computerB < superscript.txt
私もできるだけ安全にこの仕事をしたい。端末を開くと、コンピュータBにSSHで接続できないはずです。明らかに、スクリプト/プログラムを編集して後で実行する方法はありません。
SUIDとSSHキーを持つ他のユーザーを使用してシステムにアクセスしようとしていますが、SUIDとスクリプトの解釈にはセキュリティ上の問題があります。
誰でもどんな提案がありますか?
答え1
SSHホストにSUIDプログラムをインストールするのではなく、必要な権限を持つユーザーとして接続しますが、特定のコマンドをそのキーにバインドします。
ターゲットユーザーのファイル.ssh/authorized_keys
でこれを行います。例えば、
command="poweroff" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJQwKcn2AJxNpuzRM/SfJLn0UEXCMmAmI2Xdqeng4nB9 saft@home
複数のコマンドのいずれかを使用するには、適切に解釈されたスクリプトを使用できます$SSH_ORIGINAL_COMMAND
。
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
poweroff)
exec poweroff
;;
firefox)
killall firefox; systemctl enable apache; exec firefox
;;
*)
printf '%s\n' >&2 \
"Unrecognised command `$SSH_ORIGINAL_COMMAND'" \
'Valid commands are:' \
' * poweroff' \
' * firefox'
exit 1
;;
esac