使用paramiko如何连接服务器?

    本文和大家分享的是python开发中使用paramiko连接服务器的方法和步骤,希望通过本文的,对大家学习和使用paramiko有所帮助。

  ssh连接步骤

  1.ssh server建立server public key,对应文件/etc/ssh/ssh_host_*文件

  首先是有一个ssh的服务器,它建立了一些公匙,然后放在本地的文件中。

  2.ssh client发出连接请求

  这个sshclient它发出连接请求

  3.ssh server发送server public keyssh clientclient如何反应?]

  服务器把公匙发给客户端。

  4.ssh client比较server public key,同时计算自己的client pubic/private key

  客户端拿到公匙之后进行比较,同是做出判断,接收或者是拒绝,还有保存,同是时计算出自己的公匙还有私匙。

  5.ssh client发送client public keyssh server

  然后把这个公匙发给服务器。

  6.开始连接,双向加解密

  接着就开始连接双向通讯,这个就是ssh连接的整个过程。

  paraiko connect to remote server

  前提:

  1.remote server open ssh service.

  2.知道其username,password

  显示你要连接的机器,它已经开启了ssh的这样的服务, 我们今天要连接的这台机子就是我另外一台局域网内的,ubuntu的机器,它已经开启了,默认端口为22ssh的服务,而且要知道它的用户名和密码。

  方法:

  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/ 

 

猜你喜欢

转载自2789593579.iteye.com/blog/2344886