Ssh

SSH ForceCommand for shell,同時保持正常登錄和遠端命令執行成為可能

  • June 25, 2019

我怎樣才能執行/調整這個命令,同時使用 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

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