使用paramiko如何连接服务器?
本文和大家分享的是python开发中使用paramiko连接服务器的方法和步骤,希望通过本文的,对大家学习和使用paramiko有所帮助。
ssh连接步骤
1.ssh server建立server public key,对应文件/etc/ssh/ssh_host_*文件
首先是有一个ssh的服务器,它建立了一些公匙,然后放在本地的文件中。
2.ssh client发出连接请求
这个ssh的client它发出连接请求
3.ssh server发送server public key给ssh client[client如何反应?]
服务器把公匙发给客户端。
4.ssh client比较server public key,同时计算自己的client pubic/private key
客户端拿到公匙之后进行比较,同是做出判断,接收或者是拒绝,还有保存,同是时计算出自己的公匙还有私匙。
5.ssh client发送client public key到ssh server
然后把这个公匙发给服务器。
6.开始连接,双向加解密
接着就开始连接双向通讯,这个就是ssh连接的整个过程。
paraiko connect to remote server
前提:
1.remote server open ssh service.
2.知道其username,password
显示你要连接的机器,它已经开启了ssh的这样的服务, 我们今天要连接的这台机子就是我另外一台局域网内的,ubuntu的机器,它已经开启了,默认端口为22的ssh的服务,而且要知道它的用户名和密码。
方法:
1.新建paramiko.SSHClient
Paramiko连接远程服务器,它的过程是这样的,首先是新建一个SSHClient,这个SSHClient是什么呢,它是Paramiko提供给我们的一个api中的类,因为Paramiko它是一个基于ssh协议的一个封装,的类库它提供了一些建议好用的api给我们使用。让我们来完成各种各样的操作。这个SSHClient就是它提供的一个要访问远程,和文件传输的一个最基本的接口。
2.设置hot key机制
另外一个就是要设置它的hot key,就是之前所提到的,设置公匙的,处理公匙的这样一个机制。Paramiko它提供给我们一个,比较简单的设置的办法。
3.调用API connect
最后就是掉它的connect API连接,这样我们就来看一下,如何编码来实现。
我们打开pycham,新建一个Python项目,引入Paramiko的包。
import Paramiko
然后我们使用Paramiko 的SSHClient这个内建立一个Client对象。
client = Paramiko. SSHClient ()
然后就设置它的host_key机制,一般是采用Paramiko的自动天际的机制。
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
第三个就是调用它的connect方法,我们可以看一下,它的connect方法有很多的参数,有ip、端口、用户名、密码、还有一些其它的很多参数。我们在用其中一个比较重要的参数就是timeout就是超时时间,就是建立这个链接的时候我们想让它,如果多久没有直接连接,就返回异常。
client.connect(hostname=self.host, port=self.port, username=self.usr, password=self.pwd, timeout=self.timeout)
然后这个connect我们首先,来看下不设置这个host_key会有什么情况。

它会报错,会抛出一个SSHException这个异常,说这个服务器找不到,不在这个known_hosts的这个文件下,所以说这个是必要的。
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=self.host, port=self.port, username=self.usr, password=self.pwd, timeout=self.timeout)
我们来看一下

就没有报错了。我怎么知道它这个连接是正常的呢。
因为这个connect API它如果,出现连接异常的情况下,它都会抛出一个sshexception这个异常,现在它没有抛异常就说明它是,正常连接。
原文链接:http://www.maiziedu.com/wiki/frame/query/
使用paramiko如何连接服务器?的更多相关文章
- python paramiko模块:远程连接服务器
1. SFTP基于 用户名密码 登录服务器,实现上传下载: import paramiko transport = paramiko.Transport(()) # 生成trasport,配置主机名 ...
- python中使用paramiko模块并实现远程连接服务器执行上传下载
paramiko模块 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 因此,如果需要使用SSH从一个平台连接到另外一个平台,进行一系 ...
- Python通过ssh连接服务器并执行命令
[本文出自天外归云的博客园] 脚本示例如下: # coding:utf-8 import time,paramiko,re,StringIO def exec_shell(command): ''' ...
- Mac 使用 SSH 免密连接服务器
1.生成 SSH 秘钥 ssh-keygen -t rsa 生成的密钥对 id_rsa 和 id_rsa.pub,默认存储在 ~/.ssh 目录,其中没有后缀的是私有,有后缀 .pub 的为公钥.生 ...
- telnet命令——连接服务器
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.在终端使用者的电脑上使用telnet程序,用它连接 ...
- ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(二) 之 ChatServer搭建,连接服务器,以及注意事项。
上篇:ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(一) 之 基层数据搭建,让数据活起来(数据获取) 上一篇我们已经完成了初步界面的搭建工作,本篇将介绍IM的核心内容 ...
- Linux:ssh连接服务器很慢
ssh连接服务器,如果很慢,可以进行如下处理: vi /etc/ssh/sshd_config#UseDNS yes改成:UseDNS no/etc/init.d/sshd restart ----- ...
- 通过MSSQL连接服务器连接至Oracle数据库
前言 有很多时候,我们需要MSSQL与Oracle进行跨库查询或数据交互.本篇随笔将阐述如何通过MSSQL的连接服务器连接至Oracle数据库,并且读取数据的示例. 具体步骤 首先需要到Oracle的 ...
- SQLSERVER建立MYSQL连接服务器
1. 在SQL SERVER端安装MYSQL的ODBC驱动 2. 在ODBC数据源添加MYSQL(控制面板\所有控制面板项\管理工具) 在用户DSN 和系统DSN添加配置驱动程序 注:字符集一定要和M ...
随机推荐
- linux中shell变量$#,$@,$0,$1,$2的含义解释
linux中shell变量$#,$@,$0,$1,$2的含义解释: 变量说明: $$ Shell本身的PID(ProcessID) $! Shell最后运行的后台Process的PID $? 最后运行 ...
- bzoj1009矩阵快速面+kmp
其实kmp真的很次要,求长度为20的kmp感觉真的有点杀鸡用牛刀 这题思路相当明确:一看题就是数位dp,一看n的大小就是矩阵 矩阵的构造用m*m比较方便,本来想写1*m的矩阵乘m*m的,但是感觉想起来 ...
- 【BZOJ1857】[Scoi2010]传送带 三分法
三分套三分,挺神奇的...每次找到,每个传送带的上下两个三等分点,下面那个小,则一定有更优的在中间. #include <iostream> #include <cstdio> ...
- 关于The C compiler "arm-none-eabi-gcc" is not able to compile a simple test program. 的错误自省...
在 GCC ARM Embedded https://launchpad.net/gcc-arm-embedded/ 上面下载了个arm-none-eabi-gcc 用cmake 编译时 #指定C交叉 ...
- linux上安装activeMQ
1.新建一个文件夹activeMQ mkdir /server 2.授权 chmod 777 /server 3.下载activeMQ安装包,拷贝到/activeMQ目录下apache-acti ...
- ajax教程
本文来自w3school 简介: AJAX = Asynchronous JavaScript and XML 异步的javascript和xml ajax不是新的编程语言,而是一种使用现有标准的新方 ...
- jQuery整理
近几日总是在用js写一些东西,jq用的反而少了,最近在工作中总是会用到不常用的jQuery方法,之前觉得可能用到的情况比较少,便没在意这些方法,结果吃了亏,现在准备重新总结一些jQuery中的一些常用 ...
- cocos2dx 实现flappybird
前两天在博客园看到网友实现的一个网页版的flappy bird,挂在360游戏平台,玩了一会儿得分超低,就很想自己做一个.刚好这两天炫舞的活都清了,就弄一下玩玩. 效果图 布局类GameScene.h ...
- jquery修改Switchery复选框的状态
script //选择框 var mySwitch; /* * 初始化Switchery * * classNmae class名 */ function initSwitchery(classNam ...
- Redis 排行榜 相同分数根据时间优先排行
版权声明:本文为博主原创文章,未经博主允许不得转载. 1. 需求 Redis 提供了按分数进行排序的有序集合. 比如在游戏里面,比如战斗力排行,充值排行,用默认的Redis 实现就可以达到需求. ...