2017-10-10 92 views
1

所以我目前正在負責平衡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

回答

1

爲什麼不使用paramiko通過SSH連接?您可以指定一個密鑰,如this gist所示。

通過使用此功能,您可以輕鬆設置在服務器上執行哪些命令。

+0

感謝您的建議。我昨晚看着paramiko,但我想我會看到這個想法。你的要點很棒,謝謝你的提示! – mcdito13

+0

工程就像一個魅力。 – mcdito13

+0

@ mcdito13好! – montudor

1

可能你的私鑰位於你的主目錄,python以限制用戶的身份產生bash進程,嘗試改變腳本以明確包含私鑰,如果仍然無效,你將不得不復制密鑰並且其權限變更

明確添加私鑰:

ssh -i /path/to/private/key [email protected] 
相關問題