除非从脚本运行,否则 SSH 身份验证是否有效?

A.C*_*ght 2 scripting ssh password authentication

我已经按照类似于这篇文章中的说明设置了我的服务器以允许密钥/对身份验证。

据我所知,它工作正常。例如,如果我执行以下操作,它可以正常工作:

ssh myusername@mydomain.com
Run Code Online (Sandbox Code Playgroud)

它不会提示我输入密码。这就是我想要发生的事情。但是,如果我写一个像这样的小 bash 脚本:

#!/bin/bash -x
ssh myusername@mydomain.com
Run Code Online (Sandbox Code Playgroud)

并执行:

sudo ./mytestscript.sh
Run Code Online (Sandbox Code Playgroud)

...它会提示我:

myusername@mydomain.com's password:
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我需要能够从我的脚本中登录而不会被提示输入密码!

Ins*_*yte 6

我猜如果你在没有sudo. 如果是这种情况,那么您的问题是 ssh 现在正在 root 的主目录而不是您的主目录中查找公钥。-i向您的 ssh 命令添加一个选项,指定您配置的密钥的路径,或者改用 root 的公钥。

如果您使用的ssh-agent是存储密钥的解密版本而不是使用无密码的密钥,您还需要编辑/etc/sudoers并添加env_keep+="SSH_AUTH_SOCK SVN_SSHDefaultsssh 中,以便 ssh 可以找到您的身份验证套接字。