SSHauthentication工作,除非从脚本运行?

我已经build立了我的服务器,通过遵循类似于这篇文章中find的指令来允许密钥/对authentication

据我所知,这是正确的工作。 如果我做了以下,例如,它正常工作:

ssh [email protected] 

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

 #!/bin/bash -x ssh [email protected] 

并执行:

 sudo ./mytestscript.sh 

它会提示我:

 [email protected]'s password: 

我究竟做错了什么? 我需要能够从我的脚本内login,而不需要提示input密码!

我猜测,如果你没有使用sudo运行脚本,脚本就可以正常工作。 如果是这样的话,比你的问题是,ssh现在正在寻找根目录的主目录中的公钥而不是你的。 给你的ssh命令添加一个-i选项,指定你configuration的密钥的path,或者改为使用root的公钥。

如果您使用ssh-agent存储密钥的解密版本而不是使用密码短语密钥,则还需要编辑/etc/sudoers并将env_keep+="SSH_AUTH_SOCK SVN_SSHDefaults以便ssh可以find您的authsockets。