我有一个Linux盒子,上面运行着一些python应用程序 . 要求是允许该应用程序上的任何登录用户(用户存储在sqlite表中)能够SSH进入该框 .

我正在尝试使用 libpam_sqlitehere

我已经对 /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密钥)?

在此先感谢您的帮助!