Dieser Artikel teilt hauptsächlich die Lernmaterialien des Python-Paramiko-Moduls. Es hat einen gewissen Referenzwert.
Paramiko ist ein in der Python-Sprache geschriebenes Modul, das das SSH2-Protokoll unterstützt Verschlüsselung und Authentifizierung für die Verbindung zu Remote-Servern. paramiko unterstützt Linux, Solaris, BSD, MacOS X, Windows und andere Plattformen, um über SSH eine Verbindung von einer Plattform zur anderen herzustellen. Mit diesem Modul können Sie ganz einfach eine SSH-Verbindung und ein SFTP-Protokoll für die SFTP-Dateiübertragung durchführen.
Lassen Sie uns zunächst die folgenden Substantive klären:
SSHClient: Pakete Kanal, Transport, SFTPClient
Kanal: ist ein Typ Socket, ein sicherer SSH-Übertragungskanal;
ist eine verschlüsselte Sitzung (aber die Sitzung eines solchen Objekts wurde nicht eingerichtet) und erstellt einen verschlüsselten Tunnel. Dieser Tunnel wird als Kanal bezeichnet Sitzung:
ist das Objekt, das die Verbindung zwischen Client und Server aufrechterhält. Verwenden Sie connect()/start_client()/start_server(), um die Sitzung zu starten.
pycrypto. Da das Paramiko-Modul intern von pycrypto abhängt, laden Sie zuerst pycrypto herunter und installieren Sie es
pip3 install pycrypto
Spezifische Modulverwendung
Remoteverbindungen werden in zwei Typen unterteilt: (1) Verbindung basierend auf Benutzername und Passwort (2) Verbindung basierend auf öffentlicher Schlüssel
Durch die Verwendung von Paramiko für den Remote-Betrieb gibt es im Wesentlichen zwei Arten: (1) Nur SSHClient verwenden (2) Erstellen Sie selbst einen Transport
Verbinden Sie sich basierend auf Benutzername und Passwort
import paramiko # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='host', port=22, username='root', password='123') # 执行命令 stdout命令结果,stderr错误 stdin, stdout, stderr = ssh.exec_command('ls') # 获取命令结果 result = stdout.read() # 关闭连接 ssh.close()
import paramiko transport = paramiko.Transport(('hostname', 22)) transport.connect(username='root', password='123') ssh = paramiko.SSHClient() ssh._transport = transport stdin, stdout, stderr = ssh.exec_command('df') print(stdout.read()) transport.close()
import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa') # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='host', port=22, username='root', key=private_key) # 执行命令 stdin, stdout, stderr = ssh.exec_command('df') # 获取命令结果 result = stdout.read() # 关闭连接 ssh.close()
import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa') transport = paramiko.Transport(('hostname', 22)) transport.connect(username='wupeiqi', pkey=private_key) ssh = paramiko.SSHClient() ssh._transport = transport stdin, stdout, stderr = ssh.exec_command('df') transport.close()
SFTPClient: wird verwendet, um eine Verbindung zum Remote-Server herzustellen und Upload- und Download-Funktionen auszuführen.
Upload und Download basierend auf Benutzername und Passwort
import paramiko transport = paramiko.Transport(('hostname',22)) transport.connect(username='root',password='123') sftp = paramiko.SFTPClient.from_transport(transport) # 将location.py 上传至服务器 /tmp/test.py sftp.put('/tmp/location.py', '/tmp/test.py') # 将remove_path 下载到本地 local_path sftp.get('remove_path', 'local_path') transport.close()
import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa') transport = paramiko.Transport(('hostname', 22)) transport.connect(username='root', pkey=private_key ) sftp = paramiko.SFTPClient.from_transport(transport) # 将location.py 上传至服务器 /tmp/test.py sftp.put('/tmp/location.py', '/tmp/test.py') # 将remove_path 下载到本地 local_path sftp.get('remove_path', 'local_path') transport.close()
Das obige ist der detaillierte Inhalt vonErfahren Sie, wie Sie das Paramiko-Modul in Python teilen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!