每当有人尝试通过 SSH 连接到服务器(例如 Ubuntu 14.04)时,我都会尝试调用 ruby 脚本。
例如,有人尝试使用 ssh root@serverip 登录,应该调用我的 ruby 脚本,并且只有在脚本返回 true 并且如果返回 false 时,登录过程才应该继续,如果返回 false,则应关闭连接。
我怎样才能做到这一点?
谢谢。
为了满足您的要求,如果您使用ForceCommand
选项,您还应该使用$SSH_ORIGINAL_COMMAND
环境变量:
ForceCommand /path/to/script && $SSH_ORIGINAL_COMMAND
这将运行您的脚本,并根据/path/to/script
的退出状态,它将运行用户命令或退出会话。
您可以尝试在服务器的sshd_config文件中使用 ForceCommand 参数。 它相当简单,并且有据可查的在线:)
您在配置文件的底部输入:
ForceCommand /path/to/script
不确定是否可以检查某些条件并终止连接,但是这可能会指导您。
正如一位朋友在回答中提到的,基于退出代码的执行对我不起作用。
这是一个解决方法:-
正如一些人提到的,我在/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
谢谢大家!