所以,我遇到了一个相当奇怪的问题。我有一个服务器,当我尝试通过 SSH 连接时,如果我在第一次尝试时输入正确的密码,它会立即关闭连接。但是,如果我在第一次尝试时故意输入错误的密码,然后在第二次或第三次提示时输入正确的密码,它会成功登录我的计算机。同样,当我尝试使用公钥身份验证时,我会立即关闭连接。但是,如果我为密钥文件输入了错误的密码,然后在恢复为密码身份验证后又输入了另一个错误的密码,只要我在第二次或第三次提示时提供正确的密码,我就可以成功登录。
该机器运行 Red Hat Enterprise Linux Server 6.2 版(圣地亚哥),并使用 LDAP 和 PAM 进行身份验证。关于从哪里开始调试这个的任何想法?让我知道我需要提供哪些配置文件,我会很乐意这样做。
这是一些调试信息。以下代码块按顺序表示这 3 种情况:1) 首次尝试时更正私钥密码,2) 跳过私钥,首次尝试时更正常规密码,3) 跳过私钥,故意输入错误密码,然后进入好的...这是唯一让我真正连接的场景。
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to [removed for privacy].
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/home/trevor/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /home/trevor/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: …Run Code Online (Sandbox Code Playgroud) 我试图更好地了解 OS X 登录过程,以确定实现VPN 单点登录的最佳方式。
如果我错了,请纠正我,但我相信——
launchd(8)调用gettyent(3)并因此确定 fromttys(5)执行loginwindow.appfor /dev/console。
loginwindow.app尝试获取system.login.console授权权限,授权数据库为此指定了以下机制(与我对其功能的理解一起列出);那些有特权的在authd进程中运行(作为 root),而那些没有特权的在SecurityAgent进程中运行(作为 _securityagent):
builtin:policy-banner(显示登录窗口横幅,如果设置)。loginwindow:login (提示输入凭据)。builtin:login-beginbuiltin:reset-password,privileged(使用 Apple ID执行密码重置)。builtin:forward-login,privileged (在启动时从 EFI 转发凭据)。builtin:auto-login,privileged (在启动时应用自动登录凭据)。builtin:authenticate,privileged(所调用pam_authenticate(3)用于authorization服务;集“UID”上下文值)。PKINITMechanism:auth,privileged (通过获取 TGT 来初始化 Kerberos)。builtin:login-successloginwindow:success (保护登录会话免受未经授权的远程访问;在系统的 utmp 和 utmpx 数据库中记录登录;设置控制台终端的所有者和权限)。HomeDirMechanism:login,privileged (挂载用户的主目录)。HomeDirMechanism:status (显示主目录安装进度)。MCXMechanism:login (应用配置文件)。loginwindow:done (重置用户的首选项以包括全局系统默认值;使用用户的首选项配置鼠标、键盘和系统声音;设置用户的组权限;从目录服务中检索用户记录并将该信息应用于会话;加载用户的计算环境——包括首选项、环境变量、设备和文件权限、钥匙串访问等;启动 Dock、Finder 和 SystemUIServer;启动用户的登录项)。 …// 2 月 8 日更新 - 简要说明未决问题:
我们的情况
我们公司的几个人登录到服务器并上传文件。他们都需要能够上传和覆盖相同的文件。他们有不同的用户名,但都属于同一个组。但是,这是一个 Internet 服务器,因此“其他”用户应该(通常)只有只读访问权限。所以我想要的是这些标准权限:
文件:664
目录:771
我的目标是所有用户都不需要担心权限。服务器的配置方式应使这些权限适用于所有新创建、复制或覆盖的文件和目录。只有当我们需要一些特殊权限时,我们才会手动更改它。
我们通过 Nautilus 中的 SFTP-ing 将文件上传到服务器,通过使用 sshfs 挂载服务器并在 Nautilus 中访问它,就像它是本地文件夹一样,以及通过命令行中的 SCP-ing。这基本上涵盖了我们的情况和我们的目标。
现在,我已经阅读了很多关于美丽的 umask 功能的内容。据我所知,umask(与 PAM 一起)应该允许我做我想做的事:为新文件和目录设置标准权限。然而,经过许多小时的阅读和反复试验,我仍然没有让它起作用。我得到了许多意想不到的结果。我真的很想深入了解 umask 并且有很多问题没有得到解答。我将在下面发布这些问题,以及我的发现和对导致这些问题的试验的解释。鉴于很多事情似乎都出错了,我认为我做错了几件事。因此,有很多问题。
注意:我使用的是 Ubuntu 9.10,因此无法更改 sshd_config来设置 SFTP 服务器的 umask。已安装 SSH OpenSSH_5.1p1 Debian-6ubuntu2 < 需要 OpenSSH 5.4p1。那么问题来了。
1. 我是否需要重新启动 PAM 更改才能生效?
让我们从这个开始。涉及的文件太多了,我无法弄清楚什么会影响,什么不会影响,也因为我不知道是否必须重新启动整个系统才能使 PAM 更改生效。我在没有看到预期的结果后这样做了,但这真的有必要吗?或者我可以从服务器注销并重新登录,新的 PAM 策略是否有效?或者是否有一些“PAM”程序可以重新加载?
2. 是否有一个单一的文件可以影响所有会话的所有用户?
所以我最终更改了许多文件,因为我阅读了许多不同的东西。我最终在以下文件中设置了 umask:
~/.profile -> umask=0002
~/.bashrc -> umask=0002
/etc/profile -> umask=0002
/etc/pam.d/common-session …Run Code Online (Sandbox Code Playgroud) 升级到 CentOS 7 后,无法再通过 LDAP 登录。在 CentOS 6 中,我使用了运行良好的软件包pam_ldap,但现在新版本的 CentOS 不再提供 pam_ldap。
通过ldapsearch连接仍然可以正常工作,但尝试通过 ssh 进行身份验证不起作用。
我重新安装了包nss-pam-ldapd并通过authconfig-tui重新配置了身份验证,但它仍然不起作用。
下面我用user.name替换我的用户名,用dc=sub,dc=example,dc=org替换基数。
我的主机操作系统是 CentOS 7。所有当前可用的更新都已安装。
$ uname -a
Linux isfet 3.10.0-123.8.1.el7.x86_64 #1 SMP Mon Sep 22 19:06:58 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
安装包
$ rpm -qa | grep -i ldap
openldap-2.4.39-3.el7.x86_64
nss-pam-ldapd-0.8.13-8.el7.x86_64
openldap-clients-2.4.39-3.el7.x86_64
Run Code Online (Sandbox Code Playgroud)
/etc/openldap/ldap.conf 的内容
URI ldap://172.16.64.25
BASE dc=sub,dc=example,dc=org
Run Code Online (Sandbox Code Playgroud)
/etc/nslcd.conf 的内容
ldap_version 3
uri ldap://172.16.64.25
base dc=sub,dc=example,dc=org
ssl no
Run Code Online (Sandbox Code Playgroud)
/var/log/secure …
我正在使用 sshd,并允许使用公钥身份验证登录。
我希望允许选择的用户使用 PAM 两因素身份验证模块登录。
有什么方法可以为特定用户允许 PAM 两因素身份验证?
出于同样的原因 - 我只想为特定帐户启用密码身份验证。我希望我的SSH服务拒绝密码验证企图阻挠想成为黑客进入以为我不会接受密码验证-除了其中有人知道我的戒备森严的秘密账户,该账户的情况下是启用密码。我想在我的 SSH 客户端不允许我执行密钥或双因素身份验证的情况下执行此操作。
我已经成功地将 vsftpd 与通过 PAM 连接到我的 mysql 数据库的虚拟用户一起使用。现在我想通过成功的 vsftpd 连接自动创建用户目录。
这是 /etc/pam.d/vsftpd 配置:
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3
account required pam_mysql.so verbose=1 user=root passwd=mypass host=localhost db=mydb table=mytable usercolumn=username passwdcolumn=password crypt=3
session required pam_mkhomedir.so skel=/home/skel/ umask=0022 debug
Run Code Online (Sandbox Code Playgroud)
现在添加 pam_mkhomedir 只是表明它无法创建目录,任何日志中都没有其他消息。所以它显然不适用。还有什么我需要的吗?
我的/etc/vsftpd/vsftpd.conf:
# No ANONYMOUS users allowed
anonymous_enable=NO
# Allow 'local' users with WRITE permissions (0755)
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=NO
xferlog_enable=YES
connect_from_port_20=YES
# define a unique user on your system …Run Code Online (Sandbox Code Playgroud) 我有一个有效的 AD/Linux/LDAP/KRB5 目录和身份验证设置,但有一个小问题。当账户被禁用时,SSH 公钥认证仍然允许用户登录。
很明显,kerberos 客户端可以识别禁用的帐户,因为 kinit 和 kpasswd 返回“客户端凭据已被撤销”,无需进一步的密码/交互。
是否可以配置 PAM(在 sshd_config 中使用“UsePAM yes”)以禁止禁用帐户登录,其中身份验证由公钥完成?这似乎不起作用:
account [default=bad success=ok user_unknown=ignore] pam_krb5.so
Run Code Online (Sandbox Code Playgroud)
请不要在您的回答中引入 winbind - 我们不使用它。
我正在使用 vsftpd 设置服务器以让虚拟用户访问他们的空间。现在它可以正常工作,但只能使用 CRYPT 密码。所以
sudo htpasswd -c /etc/vsftpd/ftpd.passwd phpmyadmin
Run Code Online (Sandbox Code Playgroud)
不允许我登录,但是
sudo htpasswd -c -d /etc/vsftpd/ftpd.passwd phpmyadmin
Run Code Online (Sandbox Code Playgroud)
将要。
/etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
nopriv_user=vsftpd
virtual_use_local_privs=YES
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/vhosts/$USER.universe.local
chroot_local_user=YES
hide_ids=YES
guest_username=vsftpd
Run Code Online (Sandbox Code Playgroud)
/etc/pam.d/vsftpd
auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd crypt=2
account required pam_permit.so crypt=2
Run Code Online (Sandbox Code Playgroud)
我从源代码和 PHP 安装了 apache2.4.3。
我尝试过的事情:
我已经为此苦苦挣扎了一个星期,我希望你们能进一步帮助我
/etc/ssh/sshd_config 默认情况下有以下行
UsePAM yes
Run Code Online (Sandbox Code Playgroud)
我通读了可用的文档并得出结论,如果我只使用公钥登录,则不会使用 PAM。如果我禁用 PAM,可能会产生什么负面后果?例如
UsePAM no
Run Code Online (Sandbox Code Playgroud) 在以下情况下如何正确调试shell登录?
身份验证通过 sssd 配置和 krb5 身份验证服务器进行处理。在 Ubuntu 16.04 LTS 上使用相同的 .conf 文件登录工作完美。一旦将它与 17.04 一起使用,除了 root 之外的所有内容登录都会导致 getty shell 重新启动 - /var/log/syslog 状态
getty@tty2.service: Service has no hold-off time, sheduling restert.
Stopped Getty on tty2.
Started Getty on tty2.
Run Code Online (Sandbox Code Playgroud)
并在 auth.log 中注明以下内容:
pam_sss(login:account): Access denied for user <user>: 4 (System error)
System error
Run Code Online (Sandbox Code Playgroud)
执行login <user>结果
root@pctest# login <user>
password:
System error
root@pctest#
Run Code Online (Sandbox Code Playgroud)
使用sssctl config-check16.04 LTS 上的工作配置不会出现预期的错误。
我提到的每个测试都是在格式化驱动器上自动配置和手动检查的新安装系统上执行的。额外的包是通过ubuntu-standard元包安装的(没有安装桌面环境)。尽管如此,该问题也在升级到 17.04 的工作 16.04 LTS 系统上重现。
我既没有找到详细模式,login也没有找到将登录失败部分作为独立执行的合理方法。那你会怎么做? …