我正在尝试构建一个连接到其他服务器的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
进行身份验证和登录而无需输入密码但仍然拥有密码bob
或paul
尝试登录时要求输入密码?
是的,这很简单:只为监控用户创建一个SSH密钥(ssh-keygen
),然后将其私钥复制到其他服务器(ssh-copy-id SERVER-IP-OR-NAME
)。
只需检查服务器上是否已启用PubkeyAuthentication
,但默认情况下已启用...
这样就可以在不询问密码的情况下记录用户监视器,并且需要其他用户输入密码。
有可能,您必须将RSA
密钥复制到服务器并启用RSA
身份验证。
您可以使用ssh-keygen
生成密钥并按照说明进行操作,然后使用ssh-copy-id
将其复制到服务器并在服务器上启用PubkeyAuthentication
。一定要重新启动sshd.service
!
资源:openSSH docs