![除非从脚本运行,否则 SSH 身份验证有效吗?](https://linux22.com/image/511219/%E9%99%A4%E9%9D%9E%E4%BB%8E%E8%84%9A%E6%9C%AC%E8%BF%90%E8%A1%8C%EF%BC%8C%E5%90%A6%E5%88%99%20SSH%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E6%9C%89%E6%95%88%E5%90%97%EF%BC%9F.png)
我已按照类似于以下位置的说明设置服务器以允许密钥/对身份验证这个帖子。
据我所知,它工作正常。例如,如果我执行以下操作,它就可以正常工作:
ssh [email protected]
它不会提示我输入密码。这正是我想要的。但是,如果我编写一个像这样的小 bash 脚本:
#!/bin/bash -x
ssh [email protected]
并执行:
sudo ./mytestscript.sh
...它会提示我:
[email protected]'s password:
我做错了什么?我需要能够从脚本内部登录而无需输入密码!
答案1
我猜想,如果您不使用 运行该脚本,它应该可以正常工作sudo
。如果是这样,那么您的问题是 ssh 现在正在 root 的主目录中而不是您的主目录中寻找公钥。-i
在您的 ssh 命令中添加一个选项,指定您配置的密钥的路径,或者改用 root 的公钥。
如果您使用ssh-agent
它来存储密钥的解密版本而不是使用无密码密钥,那么您还需要编辑/etc/sudoers
并添加env_keep+="SSH_AUTH_SOCK SVN_SSH
到Defaults
ssh 可以找到您的身份验证套接字。