簡體   English   中英

使用python的ssh(沒有paramiko和fabric)

[英]ssh using python(without paramiko and fabric)

我需要編寫python腳本來從一個服務器到另一個服務器進行ssh登錄。 不幸的是,這些服務器沒有任何互聯網連接,我無法下載軟件包。 我已經使用python子進程編寫了以下代碼,但是一旦執行ssh命令,stdin.write將不會輸入密碼。 我也嘗試了p.communicate,但無濟於事。 請在不使用paramiko或fabric的情況下幫助我將此腳本轉換為ssh。

cmd = "ssh root@17.10.14.243"
p = subprocess.Popen(cmd, stdin = subprocess.PIPE, stdout =  subprocess.PIPE, stderr =  subprocess.PIPE, bufsize = 1,shell = True)
p.stdin.write("Pass")

我希望這不是您的真實密碼!

ssh不會從stdin讀取密碼,因此使用p.communicate或其他各種寫操作將無法正常工作。

如果總是這兩台機器,則可以確保它們都具有ssh身份,然后制作一個authorized_keys文件。 如果在使用ssh-keygen創建ssh身份時未設置密碼,並且該密鑰在另一個user @ host的authorized_keys文件中,那么您將無需密碼即可進入:

ssh-keygen -t rsa 
ssh-copy-id user@other-host 

如果系統上不存在ssh-copy-id$HOME/.ssh/id_rsa.pub$HOME/.ssh/id_rsa.pub放入另一台主機的$HOME/.ssh/authorized_keys文件中(該文件可以具有多個條目)

如果您的系統上已經安裝了ssh-askpass ,也可以使用。 如果ssh在沒有連接終端的情況下運行,則將SSH_ASKPASS環境變量設置為腳本名稱將運行該腳本以獲取要使用的密碼。 因此,如果/path/to/myscript打印出mypassword ,則在沒有可用終端時, export SSH_ASKPASS=/path/to/myscript將使用mypassword

這兩個選項都有其安全性問題,因此取決於您所擁有的環境以及您最擔心的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM