我在建立與服務器的 SSH 連接時遇到問題。我的腳本很簡單,給了我一個錯誤:
user@host:權限被拒絕(公鑰)。
用戶和主機是變數,它們是正確的:
我相信這個問題可能與我的私鑰的密碼有關,因為我不知道如何將它添加到腳本中。
請你幫助我好嗎?謝謝你。
def test_check():
username = input()
host = input()
command = "cd ~/public_html/"
private_key = "path-to-the-key"
ssh = subprocess.check_output(["ssh", "-i",private_key, "-p22", "{}@{}".format("username", host), command])
print(test_check())
uj5u.com熱心網友回復:
意味著您的系統看不到密鑰。確保您已使用“ssh-add -K”加載密鑰。
這對我來說很好:
def fun():
uname='uname'
host='server.com'
command='ls /home/uname/'
ssh = subprocess.check_output(['ssh', '-i', '~/.ssh/key_rsa', f'{uname}@{host}', command])
print(ssh)
uj5u.com熱心網友回復:
有幾種可能的解決方案。
運行 ssh-agent,并為其提供您的密鑰。從安全角度來看,這可能是問題最少的選擇。
您可以使用(Python 3.4 )的
input引數。check_output這應該是一個位元組串。從安全的角度來看,這可能不是一個好主意,因為它會將您的私鑰密碼作為純文本保留在腳本中。您可以從您的私鑰中洗掉密碼(從安全角度來看也不是一個好主意)。
uj5u.com熱心網友回復:
謝謝你的幫助,我已經解決了這個問題。這是因為我試圖通過 PyCharm 進行連接。當我通過終端運行腳本時,它作業正常。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/430621.html
