仅针对特定用户的 SSH 身份验证绕过密码身份验证
Posted
技术标签:
【中文标题】仅针对特定用户的 SSH 身份验证绕过密码身份验证【英文标题】:SSH authentication bypass password auth for a particular user only 【发布时间】:2019-08-26 12:15:07 【问题描述】:我正在尝试构建一个连接到其他服务器的 bash 脚本,以进行一些基本的监控,例如检查磁盘空间并通过电子邮件发送此信息。我仍然需要所有这些服务器都需要用户一般进入/访问的密码,但是对于这个特定的监控脚本,我不想被要求输入密码(仅限通用 ssh 密钥)
如何配置特定用户(让我们称之为monitor
)使用以下命令连接到服务器但不要求输入密码(因为它将用于 cron,因此需要自动化)
// ssh 到 web1 服务器并获取磁盘空间
cmd=$(ssh web1 df -h | grep -E "xvda1|xvde1" | awk 'print $5;' | sort -r | head -1)
假设服务器有 3 个用户 'monitor'、'bob' 和 'paul'
当它遇到脚本的这一部分时,ssh web1
会强制我输入密码 - 是否可以设置特定用户(在本例中为 monitor
用户)以便能够使用 ssh some-ip
进行身份验证和登录不要求输入密码,但在bob
或paul
尝试登录时仍然要求输入密码?
【问题讨论】:
请将您的问题移至Super User(在此处删除,在此处重新发布)。这是off-topic here。 【参考方案1】:是的,这很简单:只需为 monitor 用户创建一个 SSH 密钥 (ssh-keygen
),然后将其私钥复制到其他服务器 (ssh-copy-id SERVER-IP-OR-NAME
)。
只要检查PubkeyAuthentication
在服务器上是启用的,但默认是启用的...
这样用户 monitor 将在不询问密码的情况下登录,其他用户将需要他们的密码。
【讨论】:
【参考方案2】:有可能,您必须将RSA
密钥复制到服务器并启用RSA
身份验证。
您可以使用ssh-keygen
并按照说明生成密钥,然后使用ssh-copy-id
将其复制到服务器并在服务器上启用PubkeyAuthentication
。一定要重启sshd.service
!
资源:openSSH docs
【讨论】:
以上是关于仅针对特定用户的 SSH 身份验证绕过密码身份验证的主要内容,如果未能解决你的问题,请参考以下文章
绕过对用户名/密码的 JConsole 要求 - 当使用带有 JMX 的 Jaas 自定义登录模块来处理授权和身份验证时