为使用SSHlogin的某个用户运行一个shell脚本

第一次在这里张贴,只是因为我似乎无法find答案,或者是否这是可能的。

我遇到的问题是,我想要创build一个脚本,例如在用户使用Puttylogin到我的服务器后立即运行。

我不希望用户能够执行任何可以运行的常规命令,而是要创build一个脚本来响应某些预定义的命令集,例如,

>你好

你好, 用户名在这里

这可能吗? 使用SSH不是先决条件,任何其他控制台连接,例如,telnet也可以,我只是希望用户能够连接到我的服务器,并获得一些基本命令的响应。

谢谢你的时间,我希望我已经清楚地解释了自己。

您可以通过将相关帐户的shell更改为要运行的脚本来完成这种行为。 在这种情况下,用户没有得到正常的提示,在那里input正常的命令,如lscd等等。 相反,您的脚本是在login时运行的,您可能会有需要的function。

要更改shell,可以使用chsh -command或直接将其更改为/etc/passwd 。 新的shell(你的脚本)也必须列在/etc/shells中才能正常工作。

我认为你正在寻找的东西叫做强制命令

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

强制命令可能非常有用。 假设您想让助理访问您的帐户,但只能阅读您的电子邮件。 您可以将强制命令与您的助理的SSH密钥关联起来,只运行您的电子邮件程序,而不是其他任何东西。

在SSH1和OpenSSH中,可以在authorized_keys中使用所需键之前的“command”选项来指定强制命令。 例如,要在您的助理连接时运行电子邮件程序松树:

 # 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文件,您可以在其中指定允许一个人运行的命令。

  • Authprogs SSH命令validation器
  • Authprogs源代码树
 Match user username ForceCommand command_which_you_want_to_run 

这可以放在你的ssh服务器的sshd_config文件中。 所以当一个名为username通过ssh连接到你的服务器时, command_which_you_want_to_run会被执行。

你可以微调你的ssh server 。 以下链接可能会帮助你做到这一点。

https://wiki.archlinux.org/index.php/SFTP-chroot