企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] paramiko遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。 ### 安装模块 ``` pip install pycrypto pip install paramiko 或者 python install python-paramiko ``` #### 常用方法的参数 ``` connect(self, hostname, port=22, username=None, password=None, pkey=None, timeout=None, allow_agent=True, look_for_keys=True, compress=False, sock=None,) exec_command(self, command, bufsize=-1, timeout=None, get_pty=False, environment=None) ``` ### 连接远程服务器,并执行操作 #### 用户名和密码进行认证 ```python #!/usr/bin/env python # coding:utf-8 import paramiko ssh = paramiko.SSHClient() # 主机签名添加 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 不加这句第一次登录时会报错 ssh.connect(hostname='127.0.0.1', port=22, username='root', password='CV@089556_com', compress=True) stdin, stdout, stderr = ssh.exec_command('ifconfig') print stdout.read() ssh.close() ``` #### 使用密钥进行进行认证 需要先生成密钥,然后将公钥放到服务器上。 ``` #!/usr/bin/env python # coding:utf-8 import paramiko private_key_path = '/root/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(private_key_path, password='123456') #密钥的密码 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(hostname='127.0.0.1', port=22, username='root', pkey=key, timeout=5) stdin, stdout, stderr = ssh.exec_command('ifconfig') print stdout.read() ssh.close() ``` --- ### 上传和下载文件 #### 用户名和密码进行认证 ``` #!/usr/bin/env python # coding=utf-8 import os import sys import paramiko ssh = paramiko.Transport(('127.0.0.1',22)) ssh.connect(username='root',password='CV@089556_com') sftp = paramiko.SFTPClient.from_transport(ssh) # 上传 #sftp.get('/root/python.tar.gz','/tmp/python.tar.gz') # 下载 sftp.put('/root/python.tar.gz','/tmp/python.tar.gz') ssh.close() ``` #### 使用密钥进行进行认证 ``` #!/usr/bin/env python # coding=utf-8 import paramiko private_key_path = '/root/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(private_key_path) ssh = paramiko.Transport(('127.0.0.1', 22)) ssh.connect(username='root', pkey=key) sftp = paramiko.SFTPClient.from_transport(ssh) # 上传 #sftp.get('/root/python.tar.gz','/tmp/python.tar.gz') # 下载 sftp.put('/root/python.tar.gz','/tmp/python.tar.gz') ssh.close() ```