我正在尝试构建一个bash脚本,该脚本连接到其他服务器以进行一些基本监视,例如检查磁盘空间并通过电子邮件发送此信息。我仍然需要所有这些服务器要求用户进行常规输入/访问的密码,但是对于此特定的监视脚本,我不想被要求输入密码(仅适用于通用ssh密钥)
如何使用以下命令配置特定用户(将其称为monitor
)连接到服务器,但不要求输入密码(因为它将用于cron,因此需要自动执行)< / p>
// 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
尝试登录时仍然要求输入密码吗?
答案 0 :(得分:2)
是的,这非常简单:仅为 monitor 用户创建一个SSH密钥(ssh-keygen
),然后将其私钥复制到其他服务器(ssh-copy-id SERVER-IP-OR-NAME
)
只需在服务器上启用PubkeyAuthentication
,但默认情况下它已启用...
这样,将在不询问密码的情况下登录用户 monitor ,其他用户将需要输入其密码。
答案 1 :(得分:1)
有可能,您必须将RSA
密钥复制到服务器并启用RSA
身份验证。
您可以使用ssh-keygen
并按照说明生成密钥,然后使用ssh-copy-id
将其复制到服务器并在服务器上启用PubkeyAuthentication
。请确保重新启动sshd.service
!
资源:openSSH docs