Ssh
SSH ForceCommand for shell,同時保持正常登錄和遠端命令執行成為可能
我怎樣才能執行/調整這個命令,同時使用 ForceCommand 給這個使用者他們的 shell?
客戶端命令
(cat ./sudoPassword ./someCommandInput) | ssh user@ip "sudo -Sp '' someCommand"
伺服器 sshd_config
ForceCommand /bin/bash
幕後的限制是 ForceCommand 需要是給這個使用者一個 shell 的機制,除了上面一個典型的命令
ssh user@ip
也需要工作。我嘗試了各種配置,例如
ForceCommand /bin/bash -ic $SSH_ORIGINAL_COMMAND ls ForceCommand /bin/bash -s < $SSH_ORIGINAL_COMMAND ForceCommand /bin/bash -c $SSH_ORIGINAL_COMMAND
我也嘗試過使用客戶端命令,提供像 -tt 這樣的 ssh 選項,但我似乎找不到正確的配置。
使用包裝腳本作為
ForceCommand
. 類似於此腳本的內容(例如,保存在/usr/local/bin/myshell
):#! /bin/bash if [[ -n $SSH_ORIGINAL_COMMAND ]] # command given, so run it then exec /bin/bash -c "$SSH_ORIGINAL_COMMAND" else # no command, so interactive login shell exec bash -il fi
在行動:
% grep ForceCommand -B1 /etc/ssh/sshd_config Match user muru ForceCommand /usr/local/bin/forceshell % ssh muru@localhost $ ls Desktop Documents Downloads Music Pictures Public Templates Videos $ logout Connection to localhost closed. % ssh muru@localhost echo foo foo % ssh muru@localhost echo '*' Desktop Documents Downloads Music Pictures Public Templates Videos