首页 > 解决方案 > 仅针对特定用户的 SSH 身份验证绕过密码身份验证

问题描述

我正在尝试构建一个连接到其他服务器的 bash 脚本,以进行一些基本的监控,例如检查磁盘空间并通过电子邮件发送此信息。我仍然需要所有这些服务器都需要密码才能让用户进行一般进入/访问,但是对于这个特定的监控脚本,我不想被问到密码(仅限通用 ssh 密钥)

如何配置特定用户(让我们称之为monitor)使用以下命令连接到服务器但不询问密码(因为它将用于 cron,因此需要自动化)

// ssh 到 web1 服务器并获取磁盘空间

cmd=$(ssh web1 df -h | grep -E "xvda1|xvde1" | awk '{print $5};' | sort -r | head -1)

假设服务器有 3 个用户“监视器”、“鲍勃”和“保罗”

当它到达脚本的这一部分时,会ssh web1强制我输入密码 - 是否可以设置特定用户(在本例中为monitor用户)以便能够在ssh some-ip不要求输入密码的情况下进行身份验证和登录,但仍然要求输入密码bobpaul尝试登录时的密码?

标签: unixauthenticationsshpassword-protectionssh-keys

解决方案


是的,这很简单:只需为监控用户创建一个 SSH 密钥(ssh-keygen),然后将其私钥复制到其他服务器(ssh-copy-id SERVER-IP-OR-NAME)。

只需检查PubkeyAuthentication在服务器上是否启用,但默认情况下已启用...

这样用户监视器将无需询问密码即可登录,其他用户将需要输入密码。


推荐阅读