首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSS+Pam+Tacacs+ firs会话失败

NSS+Pam+Tacacs+ firs会话失败
EN

Stack Overflow用户
提问于 2018-12-18 01:31:32
回答 1查看 276关注 0票数 0

我有一个设备,我想使用TACACS+服务器进行身份验证。

我有TACACS版本: tac_plus版本F4.0.4.26

我有带有next配置的tacacs服务器

代码语言:javascript
复制
accounting file = /var/log/tac_plus.acct
key = testing123
default authentication = file /etc/passwd

user = sf {
default service = permit
login = cleartext 1234
}

user = DEFAULT {
#       login = PAM
        service = ppp protocol = ip {}
}

在设备上,我有带配置的NSS:

/etc/nsswitch.conf

代码语言:javascript
复制
passwd:     files  rf
group:      files
shadow:     files
hosts:      files   dns
networks:   files   dns
protocols:  files
services:   files
ethers:     files
rpc:        files

和pam.d,其中包含sshd文件

代码语言:javascript
复制
# SERVER 1
auth    required                                                                        /lib/security/pam_rf.so
auth    [success=done auth_err=die default=ignore]      /lib/security/pam_tacplus.so            server=172.18.177.162:49 secret=testing123 timeout=5
account sufficient                                      /lib/security/pam_tacplus.so            server=172.18.177.162:49 service=ppp protocol=ip timeout=5
session required                                    /lib/security/pam_rf.so
session sufficient                                      /lib/security/pam_tacplus.so            server=172.18.177.162:49 service=ppp protocol=ip timeout=5
password required                                                                       /lib/security/pam_rf.so

# PAM configuration for the Secure Shell service

# Standard Un*x authentication.
auth include common-auth

# Disallow non-root logins when /etc/nologin exists.
account    required     pam_nologin.so

# Standard Un*x authorization.
account include common-account

# Set the loginuid process attribute.
session    required     pam_loginuid.so

# Standard Un*x session setup and teardown.
session include common-session

# Standard Un*x password updating.
password   include common-password

问题是,当我第一次通过TeraTerm连接到设备时,我看到输入的用户名已在会话启动中添加到/etc/passwd和/etc/shadow,但日志记录不成功,并且在tacacs服务器中我在日志中看到

代码语言:javascript
复制
Mon Dec 17 19:00:05 2018 [25418]: session.peerip is 172.17.236.2
Mon Dec 17 19:00:05 2018 [25418]: forked 5385
Mon Dec 17 19:00:05 2018 [5385]: connect from 172.17.236.2 [172.17.236.2]
Mon Dec 17 19:00:05 2018 [5385]: Found entry for alex in shadow file
Mon Dec 17 19:00:05 2018 [5385]: verify
IN $6$DUikjB1i$4.cM87/pWRZg2lW3gr3TZorAReVL7JlKGA/2.BRi7AAyHQHz6bBenUxGXsrpzXkVvpwp0CrtNYAGdQDYT2gaZ/
Mon Dec 17 19:00:05 2018 [5385]:
IN encrypts to $6$DUikjB1i$AM/ZEXg6UAoKGrFQOzHC6/BpkK0Rw4JSmgqAc.xJ9S/Q7n8.bT/Ks73SgLdtMUAGbLAiD9wnlYlb84YGujaPS/
Mon Dec 17 19:00:05 2018 [5385]: Password is incorrect
Mon Dec 17 19:00:05 2018 [5385]: Authenticating ACLs for user 'DEFAULT' instead of 'alex'
Mon Dec 17 19:00:05 2018 [5385]: pap-login query for 'alex' ssh from 172.17.236.2 rejected
Mon Dec 17 19:00:05 2018 [5385]: login failure: alex 172.17.236.2 (172.17.236.2) ssh

之后,如果我关闭TeraTerm并再次打开它并尝试连接,连接成功建立,之后如果我关闭TeraTerm并再次打开,则每次第二次尝试都会出现相同的问题。

可能有什么问题,我已经快要发疯了。

EN

回答 1

Stack Overflow用户

发布于 2019-01-07 16:23:39

在深入发现问题后,我发现iit是我的错,我用g++而不是gcc编译了我的名称服务。

由于名称服务使用

代码语言:javascript
复制
#include <pwd.h>

它定义了像nss_service_getpwnam_r和其他函数的接口,它是用C编写的,因此我必须:

代码语言:javascript
复制
 extern "C" {
   #include <pwd.h>
}

或者用GCC编写我的程序,希望一旦有人遇到同样的问题,它会对他/她有所帮助。祝好运

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53820309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档