Python之SSH-paramiko模組的使用
阿新 • • 發佈:2020-09-10
paramiko
一 介紹
# 用於幫助開發者通過程式碼遠端連線伺服器,並對伺服器進行操作。
# pip3 install paramiko
二 通過使用者名稱密碼方式遠端執行命令
import paramiko # 建立SSH物件 ssh = paramiko.SSHClient() # 允許連線不在know_hosts檔案中的主機 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 連線伺服器 ssh.connect(hostname='192.168.16.85', port=22, username='root', password='123456') # 執行命令 stdin, stdout, stderr = ssh.exec_command('df') # 獲取命令結果 result = stdout.read() # 關閉連線 ssh.close() print(result.decode('utf-8'))
三 通過使用者名稱密碼方式上傳下載檔案
import paramiko transport = paramiko.Transport(('192.168.16.85', 22)) transport.connect(username='root', password='123456') sftp = paramiko.SFTPClient.from_transport(transport) # 將location.py 上傳至伺服器 /tmp/test.py # sftp.put('123.txt', '/data/123.txt') sftp.get('/data/123.txt', '123.txt') transport.close()
四 通過公鑰私鑰遠端執行命令
import paramiko private_key = paramiko.RSAKey.from_private_key_file(r'C:/Users/Administrator/.ssh/id_rsa') # 建立SSH物件 ssh = paramiko.SSHClient() # 允許連線不在know_hosts檔案中的主機 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 連線伺服器 ssh.connect(hostname='192.168.16.85', port=22, username='root', pkey=private_key) # 執行命令 stdin, stdout, stderr = ssh.exec_command('df') # 獲取命令結果 result = stdout.read() # 關閉連線 ssh.close() print(result)
五 通過公鑰私鑰遠端上傳下載檔案
import paramiko
private_key = paramiko.RSAKey.from_private_key_file(r'C:/Users/Administrator/.ssh/id_rsa')
transport = paramiko.Transport(('192.168.16.85', 22))
transport.connect(username='root', pkey=private_key)
sftp = paramiko.SFTPClient.from_transport(transport)
# 將location.py 上傳至伺服器 /tmp/test.py
# sftp.put('/tmp/123.py', '/tmp/123.py')
# 將remove_path 下載到本地 local_path
# sftp.get('123.py', '123.py')
transport.close()
六 通過私鑰字串遠端連線伺服器
# 也可以是存在於資料庫中
key = """-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----"""
import paramiko
from io import StringIO
private_key = paramiko.RSAKey(file_obj=StringIO(key))
# 建立SSH物件
ssh = paramiko.SSHClient()
# 允許連線不在know_hosts檔案中的主機
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 連線伺服器
ssh.connect(hostname='192.168.16.85', port=22, username='root', pkey=private_key)
# 執行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 獲取命令結果
result = stdout.read()
# 關閉連線
ssh.close()
print(result)
七 生成公鑰私鑰並上傳
# 1 生成公鑰和私鑰s
sh-keygen.exe -m pem
# 2 在當前使用者家目錄會生成: .ssh/id_rsa.pub .ssh/id_rsa
# 3 把公鑰放到伺服器
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
# 4 以後再連線伺服器時,不需要在輸入密碼
ssh [email protected]