Paramiko它是Python 2.7 / 3.4+ 的一个模块,它实现了SSH2协议,用于与远程机器的安全(加密和认证)链接。与SSL不一样,SSH2不须要强大的中央权威机构签署的分层证书。SSH2协议是替换Telnet和rsh以便更安全的访问远程shell的协议 ,但该协议还包括经过加密隧道向远程服务器打开任意通道的功能(例如:SFTP的工做方式)。git
项目主页:http://www.paramiko.org/github
Github:https://github.com/paramiko/paramikoshell
SSH 是目前较可靠,专为远程登陆会话和其余网络服务提供安全性的协议。利用 SSH 协议能够有效防止远程管理过程当中的信息泄露问题。传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,由于它们在网络上用明文传送口令和数据,别有用心的人很是容易就能够截获这些口令和数据。并且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。安全
ssh另外一项优势就是对传输的数据进行加密,能够加快传输速度,SSH有不少功能,它既能够代替Telnet,又能够为FTP、POP、甚至为PPP提供一个安全的“通道”。服务器
使用ssh登录到服务器网络
不指定用户ssh
ssh 192.168.0.11加密
指定用户spa
ssh -l root 192.168.0.11code
ssh root@192.168.0.11
指定端口、用户
ssh -p 12333 root@216.230.230.114
pip install paramiko virtualenv source venv/bin/activate pip install paramiko
import paramiko # 建立SSH对象 ssh = paramiko.SSHClient() # 容许链接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 链接服务器 ssh.connect(hostname='192.168.1.1', port=22, username='weiheng', password='weiheng123') # 执行命令 stdin, stdout, stderr = ssh.exec_command('ls') # 获取命令结果 result = stdout.read() # 关闭链接 ssh.close()
import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/.ssh/id_rsa') # 建立SSH对象 ssh = paramiko.SSHClient() # 容许链接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 链接服务器 ssh.connect(hostname='192.168.1.1', port=22, username='weiheng', key=private_key) # 执行命令 stdin, stdout, stderr = ssh.exec_command('ls') # 获取命令结果 result = stdout.read() # 关闭链接 ssh.close()
paramiko远程上传和下载
import paramiko transport = paramiko.Transport(('192.168.1.1',22)) transport.connect(username='weiheng',password='weiheng123') sftp = paramiko.SFTPClient.from_transport(transport) # 将HelloWorld.py 上传至服务器 /tmp/1.py sftp.put('/tmp/HelloWorld.py', '/tmp/1.py') # 将1.py 下载到本地 HelloWorld sftp.get('/tmp/1.py', '/tmp/HelloWorld') transport.close()
使用SSHClient封装Transport
咱们可能会遇到 须要传输文件,有须要执行Linux命令的状况, 由于Transport对象只能传输文件,不能执行Linux命令,因此咱们只须要建立一个SSHClient,而后经过SSHClient的 get_transport() 来建立Transport对象
import paramiko # 建立SSH对象 ssh = paramiko.SSHClient() # 容许链接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 链接服务器 ssh.connect(hostname='192.168.1.1', port=22, username='weiheng', password='weiheng123') # 获取Transport对象 trans_obj = ssh_client.get_transport() sftp_obj = paramiko.SFTPClient.from_transport(trans_obj) sftp_obj.get_channel() # 使用sftp_obj上传和下载文件 sftp_obj.put('source','target') sftp_obj.get('source','target') # 执行命令 stdin, stdout, stderr = ssh.exec_command('ls') # 获取命令结果 result = stdout.read() # 关闭链接 ssh.close()