首页 > 代码库 > 使用paramiko如何连接服务器?
使用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如何连接服务器?