我是这样做的:
机器上只开放9019端口(用iptables做)
启动nginx服务,监听9019端口。先经过http auth。
server {
listen 9010 default;
return 401;
}
server {
listen 9010;
server_name
myentry.xxx.xxx.cn;
access_log /logs/access.log;
error_log /logs/error.log;
root /webdir;
location / {
auth_basic "Restricted";
auth_basic_user_file /tmp/aaa;
}
}
再到一个php界面,再做一次密码认证,成功后将用户的ip写到一个数据库。
这里可以再用php做一个邮箱账号的认证,比如用户输入了xxx,php将一个code发到所对应的 yyy@qq.com ,让用户输入 yyy@qq.com 里面的code,才完成验证。
后台程序每隔一定时间从数据库里面取出ip,用iptables添加该ip到ssh允许的端口。
后台程序每隔一小时再将这个ip从iptables中去除掉