Ssh

將預定義的 ssh 腳本升級到遠端電腦實現

  • April 20, 2021

問題是我想在不使用密碼的情況下從電腦 A 到電腦 B 執行某些 ssh 命令(或腳本)。

例子:

ssh apple@computerB 'poweroff'
ssh apple@computerB "killall firefox; systemctl enable apache; firefox"
ssh apple@computerB < superscript.txt

我也想盡可能安全地做到這一點。如果我只是打開一個終端,我應該無法 ssh 到 computerB。顯然無法編輯腳本/程序並在之後執行它們。

我正在考慮使用 SUID 和具有 ssh 密鑰的不同使用者來訪問電腦,但存在關於 SUID 和解釋腳本的安全問題。

有人有什麼建議嗎?

與其在 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

引用自:https://unix.stackexchange.com/questions/645911