paramiko是使用Python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式远程连接服务器。
1. 安装
在安装paramiko前,首先要安装PyCrypto模块。安装脚本为:
git clone https://github.com/dlitz/pycrypto.git
cd pycrypto && sudo python setup.py install
cd ..
git clone https://github.com/paramiko/paramiko.git
cd paramiko && sudo python setup.py install
cd ..
sudo rm -rf pycrypto paramiko
2. 使用paramiko
paramiko API 中最为基本的类是“paramiko.SSHClient". 它提供了与服务器连接和文件传输的最基本的接口。一个最简单的例子:
import paramiko
ssh = paramiko.SSHClient()
ssh.connect('127.0.0.1', username = 'ubuntu', password='123')
它将创建一个新的SSHClient实例,然后调用“connect()”来连接本地的SSH服务,没有比这更简单的了不是吗?
HOST Keys
SSH认证另一种方法是采用密钥的方式。无论何时你使用ssh来连接一个远程的服务器,host key的信息将被自动存储在家目录下的".ssh/known_hosts"文件中。如果你通过ssh新连接一个host,将会看到以下信息:
The authenticity of host 'localhost (::1)' can't be
established.
RSA key fingerprint is
22:fb:16:3c:24:7f:60:99:4f:f4:57:d6:d1:09:9e:28.
Are you sure you want to continue connecting
(yes/no)?
敲入“yes”,key的信息将被保存到“known_hosts”文件中。这些密钥很重要,因为它是与主机之间的信任机制。如果key被破坏或更改,那么客户端会拒绝连接并不会通知你,而paramiko也采用相同的规则。如果在“hnown_hosts”中没有保存相关的信息,SSHClient 默认行为是拒绝连接。如果是工作在系统反反复复安装的实验环境中时,这将变得无比的烦人。设置host key的规则调用的方法叫ssh client 实例的"set_missing_host_key_policy()",它设定了你所期望的方法来管理host key.如果你像我一样懒惰,你可以用"paramiko.AutoAddPolicy()"方法来自动接收未知的key:
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('127.0.0.1', username = 'ubuntu', password='123')
connect方法
connect
(
hostname
,
port=22
,
username=None
,
password=None
,
pkey=None
,
key_filename=None
,
timeout=None
,
allow_agent=True
,
look_for_keys=True
,
compress=False
,
sock=None
,
gss_auth=False
,
gss_kex=False
,
gss_deleg_creds=True
,
gss_host=None
,
banner_timeout=None
)