我有一个Linux盒子,上面运行着一些python应用程序 . 要求是允许该应用程序上的任何登录用户(用户存储在sqlite表中)能够SSH进入该框 .
我正在尝试使用 libpam_sqlite
库here:
我已经对 /etc/pam.s/sshd
以及 /etc/pam_conf
等进行了必要的更改 .
/etc/pam.d/sshd
:
auth required pam_sqlite.so
account required pam_sqlite.so
password required pam_sqlite.so
/etc/pam_sqlite.conf
:
database = /etc/sysdb
table = account
user_column = user_name
pwd_column = user_password
expired_column = acc_expired
newtok_column = acc_new_pwreq
我在我的SQLite表中插入了一条包含用户和密码的新记录,但失败了 .
这是 /var/log/auth/log
的错误:
sshd[2496]: Invalid user timmy from 127.0.0.1
sshd[2496]: input_userauth_request: invalid user timmy [preauth]
sshd[2496]: Failed password for invalid user timmy from 127.0.0.1 port 52220 ssh2
sshd[2496]: Connection closed by 127.0.0.1 [preauth]
在使用SQLite tablle进行身份验证之前,似乎SSH首先要检查用户是否存在于Linux Box上(我是对的吗?)
然后我在盒子上创建了一个新的Linux用户,其名称与SQLite表中的名称相同(但使用不同的密码)并再次尝试,发现它有效!
我也尝试了以下 pam_listfile.so
,并发现如果系统上有相应的用户,它只会通过 . (或者我在某处出错了)
基本上,我的问题是,为了使SSH工作( ssh some_user@some_addr
),用户 some_user
是否必须存在于 some_addr
系统上?还是我错过了一些非常明显的东西?如果是这样,有什么方法可以实现我的要求(没有多个SSH密钥)?
在此先感谢您的帮助!