Linux

為使用 SSH 登錄的特定使用者執行 shell 腳本

  • August 24, 2013

第一次在這裡發布只是因為我似乎無法找到答案,或者這是否可能。

例如,我遇到的問題是我想創建一個腳本,該腳本將在使用者使用 Putty 登錄到我的伺服器後立即執行。

我不希望使用者能夠執行您可以執行的任何正常命令,而是希望創建一個腳本來響應某些預定義的命令集,例如,

> 你好

你好,使用者名在這裡

這有可能做到嗎?使用 SSH 不是先決條件,任何其他控制台連接(例如 telnet)也可以,我只希望使用者能夠連接到我的伺服器並從一些基本命令中獲得響應。

感謝您的寶貴時間,我希望我已經足夠清楚地解釋了自己。

您可以通過將相關帳戶的外殼更改為您要執行的腳本來完成這種行為。在這種情況下,使用者根本不會得到正常的提示,在哪裡輸入正常的命令,如lscd。相反,您的腳本在登錄時執行,您可能擁有所需的功能。

要更改外殼,您可以使用chsh-command 或直接將其更改為/etc/passwd. 還必須列出新的 shell(您的腳本)才能/etc/shells使其正常工作。

我認為您正在尋找的東西稱為強制命令

http://oreilly.com/catalog/sshtdg/chapter/ch08.html#22858

強制命令可能非常有用。假設您想讓助手訪問您的帳戶,但只能閱讀您的電子郵件。您可以將強制命令與助手的 SSH 密鑰相關聯,以僅執行您的電子郵件程序,而不執行其他程序。

在 SSH1 和 OpenSSH 中,可以在 authorized_keys 中指定強制命令,並在所需密鑰之前使用“command”選項。例如,要在您的助手連接時執行電子郵件程序 pine:

# SSH1, OpenSSH
command="/usr/local/bin/pine" ...secretary's public key... 

在 SSH2 中,強制命令出現在緊跟所需密鑰的行上,使用 Command 關鍵字。前面的範例將表示:

# SSH2 only
Key secretary.pub
Command "/usr/local/bin/pine"

這只會讓他們執行我相信的一個命令。如果您需要允許他們更多,您可以使用Authprogs. 它是一個Perl腳本,其中包含一個.conf文件,您可以在其中指定允許一個人執行的命令。

引用自:https://serverfault.com/questions/470723