每当有人通过SSH登录时调用进程

时间:2016-05-27 08:59:13

标签: ruby bash ubuntu ssh ubuntu-14.04


我试图在任何人尝试SSH进入服务器时调用ruby脚本(比如说Ubuntu 14.04)。
例如,某人尝试使用ssh root @ serverip登录,并且应该调用我的ruby脚本,并且只有当脚本返回true时才会继续登录过程,如果返回false,则应该关闭连接。

我怎样才能做到这一点?

感谢。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用服务器的sshd_config文件中的 ForceCommand 参数。它非常直接且在线记录良好:)

您输入配置文件的底部:

ForceCommand /path/to/script

不确定您是否可以检查某些条件并终止连接,但这可能会指导您。

答案 1 :(得分:1)

要满足您的要求,如果您使用$SSH_ORIGINAL_COMMAND选项,则还应使用ForceCommand环境变量:

ForceCommand /path/to/script && $SSH_ORIGINAL_COMMAND

这将运行您的脚本,并根据/path/to/script的退出状态,它将运行用户命令或退出会话。

答案 2 :(得分:0)

正如朋友在回答中提到的那样,基于退出代码的执行对我不起作用。

这是一种解决方法: -

正如一些人所说,我在/etc/ssh/sshd_config

中使用了这个

ForceCommand /path/to/script

然后在脚本中我打开了bash,如果他们满足某些条件。例如在bash中

#!/bin/bash
if [ condition ]
then 
bash #This will open bash if condition is satisfied. 
//login
fi

谢谢大家!