我可以手动ssh,但不能从脚本 - 权限被拒绝(publickey)

问题描述:

所以我目前正在负责平衡python脚本。在这个脚本中,我需要更新服务器上的文件。我的计划是让我的python脚本调用一个bash脚本。我可以手动ssh,但不能从脚本 - 权限被拒绝(publickey)

在这个bash脚本中,我想SSH入服务器,在文件上执行一个awk命令,然后注销。

我目前可以手动ssh到这个服务器,因为我设置了一个ssh密钥(使用Google云端平台)。但是,当我尝试运行bash脚本,只执行

'ssh [email protected]' 

我得到的错误:权限被拒绝(公钥)

缺少什么我在这里?

+0

跑下来就需要整个洛塔细节没有给出(而不是真正的话题在网站专注于编程,而不是用ssh作为互动一个用户或系统管理员)。在问题重现和梳理日志的情况下运行'ssh -vv username @ ip'会是一个开始的地方。 (如果在客户端上查看这些日志时看起来一切都很好,那么在服务器端调试调试级别将是一个可以继续的地方)。 –

+0

请[编辑]您的问题,以包括脚本的相关部分。另外,你应该解释一下这个ssh实例应该如何进行身份验证 - 也就是说,它应该使用哪个密钥文件,以及如何配置它以便为此使用该密钥。为你的.ssh目录和密钥文件设置'ls -la'输出会很有帮助。 – Kenster

为什么不使用paramiko通过SSH连接?您可以指定一个密钥,如this gist所示。

通过使用此功能,您可以轻松设置在服务器上执行哪些命令。

+0

感谢您的建议。我昨晚看着paramiko,但我想我会看到这个想法。你的要点很棒,谢谢你的提示! – mcdito13

+0

工程就像一个魅力。 – mcdito13

+0

@ mcdito13好! – montudor

可能你的私钥位于你的主目录,python以限制用户的身份产生bash进程,尝试改变脚本以明确包含私钥,如果仍然无效,你将不得不复制密钥并且其权限变更

明确添加私钥:

ssh -i /path/to/private/key [email protected]