使用paramiko连接ssh

paramiko

paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实。

安装

pip install paramiko

模块使用

执行命令—用户名+密码

#!/usr/bin/env python
#coding:utf-8

import paramiko

# 建立一个sshclient对象
ssh = paramiko.SSHClient()
# 允许将信任的主机自动加入到host_allow 列表,此方法必须放在connect方法的前面
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 调用connect方法连接服务器
ssh.connect(‘192.168.1.108‘, 22, ‘alex‘, ‘123‘)
# 执行命令
stdin, stdout, stderr = ssh.exec_command(‘df‘)
# 结果放到stdout中,如果有错误将放到stderr中
print(stdout.read().decode(‘utf-8‘))
# 关闭连接
ssh.close();
paramiko\ecdsakey.py:164: CryptographyDeprecationWarning: Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_point
  self.ecdsa_curve.curve_class(), pointinfo
paramiko\kex_ecdh_nist.py:39: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
  m.add_string(self.Q_C.public_numbers().encode_point())
paramiko\kex_ecdh_nist.py:96: CryptographyDeprecationWarning: Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_point
  self.curve, Q_S_bytes
paramiko\kex_ecdh_nist.py:111: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
  hm.add_string(self.Q_C.public_numbers().encode_point())

原因

paramiko 2.4.2 依赖 cryptography,而最新的cryptography==2.5里有一些弃用的API。

解决

删掉cryptography,安装2.4.2,就不会报错了。

pip uninstall cryptography
pip install cryptography==2.4.2

执行命令 -秘钥

import paramiko

private_key_path = ‘/home/auto/.ssh/id_rsa‘
key = paramiko.RSAKey.from_private_key_file(private_key_path)

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(‘主机名 ‘, 端口, ‘用户名‘, key)

stdin, stdout, stderr = ssh.exec_command(‘df‘)
print(stdout.read().decode("utf-8"))
ssh.close()

上传下载文件—用户名密码

import os,sys
import paramiko

t = paramiko.Transport((‘182.92.219.86‘,22))
t.connect(username=‘derek‘,password=‘123‘)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(‘/tmp/test.py‘,‘/tmp/test.py‘)
t.close()

import os,sys
import paramiko

t = paramiko.Transport((‘182.92.219.86‘,22))
t.connect(username=‘derek‘,password=‘123‘)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.get(‘/tmp/test.py‘,‘/tmp/test2.py‘)
t.close()

上传下载文件-用户名秘钥

import paramiko

pravie_key_path = ‘/home/auto/.ssh/id_rsa‘
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)

t = paramiko.Transport((‘182.92.219.86‘,22))
t.connect(username=‘derek‘,pkey=key)

sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(‘/tmp/test3.py‘,‘/tmp/test3.py‘) 

t.close()

import paramiko

pravie_key_path = ‘/home/auto/.ssh/id_rsa‘
key = paramiko.RSAKey.from_private_key_file(pravie_key_path)

t = paramiko.Transport((‘182.92.219.86‘,22))
t.connect(username=‘derek‘,pkey=key)

sftp = paramiko.SFTPClient.from_transport(t)
sftp.get(‘/tmp/test3.py‘,‘/tmp/test4.py‘) 

t.close()

原文地址:https://blog.51cto.com/wangfeng7399/2376115

时间: 2024-10-17 00:51:10

使用paramiko连接ssh的相关文章

python工具编写之paramiko实现SSH远程连接

客户端实现有三种方式: 1:用账号密码登陆 1.1直接使用SSHClient对象的exec_command()在服务端执行命令: 代码实现: import paramikoimport sys def Usage():    print "[Usage]./SSH_Client.py ip port command" try:    ip=sys.argv[1]    port=int(sys.argv[2])    command=sys.argv[3]except:    Usag

python模块paramiko与ssh

paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Solaris, BSD, MacOS X, Windows等平台通过SSH从一个平台连接到另外一个平台.利用该模块,可以方便的进行ssh连接和sftp协议进行sftp文件传输. 一.安装 paramiko模块依赖PyCrypto模块,而PyCrypto需要GCC库编译,不过一般发行版的源里带有该模块.centos6,直接借助以下命令可以直接完成安装

python模块paramiko与ssh安装配置教程

一.paramiko模块的安装 paramiko模块依赖PyCrypto模块,而PyCrypto需要GCC库编译,不过一般发行版的源里带有该模块.这里以centos6为例,直接借助以下命令可以直接完成安装:  代码如下 复制代码 # yum install gcc python-crypto python-paramiko python-devel  -y   windows版下可以安装windows版的GCC(MinGW),然后编辑安装pycrypto和paramiko ,下载安成后,直接运行

python利用paramiko连接远程服务器执行命令

python中的paramiko模块是用来实现ssh连接到远程服务器上的库,在进行连接的时候,可以用来执行命令,也可以用来上传文件. 1.得到一个连接的对象 在进行连接的时候,可以使用如下的代码: def connect(host): 'this is use the paramiko connect the host,return conn' ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddP

使用Paramiko实现SSH登陆,文件上传下载

1,SSh登陆命令行实现: #!/usr/bin/env python # encoding: utf-8 import paramiko private_key_path = '/Users/aolens/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(private_key_path) ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.Aut

【python】--paramiko 连接 AWS 的机器

在使用AWS(亚马逊)的云机器, AWS 管理面板中生成密钥. 使用python的Paramiko 连接服务器 paramiko k = paramiko.RSAKey.from_private_key_file() c = paramiko.SSHClient() c.set_missing_host_key_policy(paramiko.AutoAddPolicy()) c.connect( = = = k ) command =stdin stdoutstderr = c.exec_co

python paramiko模块SSH自动登录linux系统进行操作

1). Linux系统首先要开启SSH服务:service ssh status 如果没安装的话,则要:apt-get install openssh-server service ssh restart 2). pip install paramiko example 1: import paramikossh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect('

python学习:paramiko登录ssh

#!/usr/bin/env python #coding:utf-8 import paramiko ssh=paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) private_key=paramiko.RSAKey.from_private_key_file('id_rsa') ssh.connect(hostname='20.55.85.15',port=22,username='ro

java连接ssh执行shell脚本

在liunx上写了一个shell脚本,想通过java去调用这个shell脚本,不知道怎么去调用,在网上说使用process这个进程方式,但是我执行机和我shell脚本都不在同一台电脑,老大说java中可以连接ssh,执行shell脚本,以下代码来自他们以前的项目 public class SSH { static Connection conn = null; static String hostname = "10.40.6.232"; static String username