Python之SSH-paramiko模塊的使用


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 root@192.168.16.85 

# 4 以后再連接服務器時,不需要在輸入密碼
ssh root@192.168.16.85


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM