一、问题背景
最近使用Python的SSH,如果用python实现远程拷贝服务器上面的文件,或者对远程服务器进行相关操作的话,使用python的paramiko模块可以很好的解决以上问题。但是该模块需要在本地安装相应的软件(python、PyCrypto、ecdsa,VS),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助。
但是,python实现OpenSSH依赖于paramiko模块,安装paramiko模块又依赖于pycrypto模块,pycrypto模块又依赖于对应版本的MSVS(Microsoft Visual Studio)。因此要想在python中使用SSH,我们需要先安装正确版本的VS和pycrypto,然后再安装paramiko模块。安装paramiko,折腾了很久,各种踩坑,现把安装过程记录下来:
二、安装环境:
Python3.6
Windows2007 64位
三、安装过程
1、安装paramiko主要需要安装3个模块,分别是:ecdsa、paramiko、pycrypto。
在python3.6的环境下,经过调试成功之后的模块版本为:ecdsa 0.13;paramiko 1.18.4;pycrypto-2.6.1.tar.gz。
①、pycrypto-2.6.1.tar.gz:
https://download.csdn.net/download/james_bian/10289693
下载pycrypto-2.6.1.tar.gz之后,
python setup.py install
如果在安装过程中没有报错,最后显示如下信息:
running install_egg_info
那么恭喜你,不用踩坑了,直接跳到第三节,安装
ecdsa了。
如果在安装过程中,显示unable to find vcvarsall.bat,那么就跟着下面的步骤一步一步来吧,继续安装VS
这是window环境下安装模块比较常见的问题,这时候你百度的话大部分文章就会告诉你下载vs,python2的话安装vs2010,python3的话安装vs2013以上的版本(重点!)
2.1 、下载地址: https://www.visualstudio.com/zh-hans/downloads/
2.2、安装时选择python开发并点击安装即可(可参考文档:https://blog.csdn.net/github_35160620/article/details/53346687)
不要着急去安装vs,这东西一安装就是很久,比较花时间,而且版本不对的话后面还是会报错。因为python有个深坑:不同的python版本对应不同的vs版本,具体对应的版本在python所在的路径下\Lib\distutils\_msvccompiler.py
比如我的路径是E:\Python\Python36\Lib\distutils_msvccompiler.py
打开找到def _find_vcvarsall(plat_spec)
这个函数下有个if version >= 15 and version > best_version
可以看到你的python版本对应的VS版本,如果不需要用vs进行开发的话,装community免费版就可以了,没必要纠结专业版啥的,安装过程中要注意,建议安装的时候选自定义。
2.3、VS安装完成之后要设置环境变量:
添加VC环境变量,设置用户环境变量,这里划重点!!!是用户环境变量,不是系统环境变量
变量名:VCINSTALLDIR
2.4、用户变量设置完成后,进入cmd命令窗口,执行命令:set CL=/FI"%VCINSTALLDIR%\\INCLUDE\\stdint.h" %CL%,执行这条语句后,再次set cl查看一下是否已经设置为修改值,显示CL=/FI"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\\INCLUDE\\stdint.h" %CL% 就是对的
2.5、经过以上步骤之后再次在cmd窗口中再次进入pycryto的解压文件夹python setup.py install
,看到能显示running install_egg_info
且没有报错就是安装成功了
③、ecdsa-0.13.tar.gz:
https://files.pythonhosted.org/packages/f9/e5/99ebb176e47f150ac115ffeda5fedb6a3dbb3c00c74a59fd84ddf12f5857/ecdsa-0.13.tar.gz
ecdsa的安装方法比较简单,解压,在cmd命令窗口进入到解压目录下,执行python setup.py install就可以了。
④、paramiko-1.18.4.zip:
https://codeload.github.com/paramiko/paramiko/zip/1.18.4
下载完成后,解压,安装方法跟escda模块一样,cmd命令窗口进入到解压目录,执行python setup.py install,至此,paramiko模块安装完毕.
from Crypto.Random.OSRNG import winrandom
修改之后再次执行 import paramiko 即可导入成功。