RHEL 6.8,我有一个本地身份验证的用户,但不完全确定该用户是否已经从另一个节点设置了基于密钥的登录来连接到相关节点。
我正在考虑为用户重新生成 ssh 密钥,以防止他使用之前设置的密钥登录。
我有该节点的“root”访问权限。最好的方法是限制已设置的基于密钥的登录,但保留当前使用该帐户的其他服务的同一帐户。
答案1
默认情况下,用户可以用来登录任何特定节点的密钥列表存储在$HOME/.ssh/authorized_keys
正在登录的节点上。
用户用于建立连接的私钥存储在发起连接的节点中。
如果您想阻止用户使用特定密钥登录,您可以简单地将其从文件中删除。但请注意,如果用户可以登录该节点或以其他方式访问该文件,他们随时可以自己将其放回原处。您还可以通过将其设置为用户无法访问的文件authorized_keys
来更改授权密钥文件的路径。但请记住,这将适用于所有用户。AuthorizedKeysFile
/etc/ssh/sshd_config
至于确定用户如何进行身份验证,该信息位于您的日志文件中/var/log/secure
。例如:
# grep Accepted /var/log/secure
Nov 26 03:13:46 www sshd[13925]: Accepted password for user1 from 203.0.113.242 port 3481 ssh2
Nov 26 03:20:22 www sshd[14216]: Accepted publickey for dev2 from 198.51.100.21 port 64386 ssh2: RSA SHA256:...omitted...
答案2
如果您想控制使用哪些密钥进行登录,您应该控制列出授权密钥的文件,因此您不应该让用户控制它。您不应该在用户目录中乱搞文件,而应该使用适当的 ssh 配置项,例如:
AuthorizedKeysCommand
:一个用作要使用的键的过滤器的程序AuthorizedKeysFile
:获取授权使用密钥的文件,可以指定用户控制目录之外的绝对路径
另外,虽然不能 100% 理解您的用例,但您可以查看证书而不是密钥,因为使用证书,您可以提供有效期并确保某些凭据会过期。请参阅-V
选项ssh-keygen
。
答案3
用户可以编辑自己的 authorized_keys 文件,因此,您所做的任何更改都可以撤消。为了防止这种情况,您可以将 authorized_keys 文件更改为用户只读,然后更改目录和文件属性以使其不可变。这将阻止用户更改授权密钥文件,但仍允许她登录。
脚步
- 从用户的 ~/.ssh/authorized_keys 文件中删除您不希望用户使用的任何密钥。
- 将生成的新公钥添加到文件中
- 将 authorized_keys 文件的权限设置为 400(仅所有者可读)
- chattr +i authorized_keys 文件(使其不可变,以便用户无法更改权限来编辑它)
- chattr +i .ssh 目录
例如假设用户名是“hogan”并以root身份登录:
#cd ~hogan/.ssh
#vim authorized_keys
[ do your edits and save ]
#chmod 400 authorized_keys
#chattr +i authorized_keys
#cd ..
#chattr +i .ssh