Ssh
將預定義的 ssh 腳本升級到遠端電腦實現
問題是我想在不使用密碼的情況下從電腦 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