Django中paramiko使用密钥执行命令和上传文件
来源:互联网 发布:战舰世界淘宝商城 编辑:程序博客网 时间:2024/05/29 13:06
这几天写一个游戏维护的平台,刚开始是直接用账号和密码直接明文登陆的,发现这样很不安全,现在改为密钥登陆执行命令和上传文件,在这里做个记录,方便以后查阅。先来看一下功能:
执行命令和上传文件的步骤:
第一步:制作密钥对
首先在服务器上制作密钥对。首先用密码登录到你打算使用密钥登录的账户,然后执行以下命令:
第二步:在服务器上安装公钥
键入以下命令,在服务器上安装公钥:
第三步:设置 SSH,打开密钥登录功能
编辑 /etc/ssh/sshd_config 文件,进行如下设置:
第四步:将私钥下载到客户端,如这里的SecureCRT
输入Hostname,Username,选择认证方式为PublicKey公钥认证,选择刚刚下载下来的id_rsa私钥文件即可!
如果能成功登陆,说明你的密钥已经配好了,接下来就是paramiko通过密钥执行命令和传文件的代码:
# 执行命令def exec_command(comm, hostname, username, password): ssh = paramiko.SSHClient() # 使用密钥登陆Linux ssh.load_system_host_keys() privatekey = os.path.expanduser(password) ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) key = paramiko.RSAKey.from_private_key_file(privatekey) ssh.connect(hostname=hostname, username=username, pkey=key) stdin, stdout, stderr = ssh.exec_command(comm) result = stdout.read() + stderr.read() # print(result.decode('utf-8')) ssh.close() return result
# 上传文件def put_file(local_path, remote_path, hostname, username, password, port=22): ssh = paramiko.SSHClient() # 使用密钥登陆Linux ssh.load_system_host_keys() privatekey = os.path.expanduser(password) ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) key = paramiko.RSAKey.from_private_key_file(privatekey) ssh.connect(hostname=hostname, username=username, pkey=key) t = ssh.get_transport() sftp = paramiko.SFTPClient.from_transport(t) sftp.put(local_path, remote_path) sftp.close()
这个是前面生成的私钥存放地址:
我这里是定义的两个函数,调用函数的时候把对应的参数传入进行调用即可。
上面配置密钥的步骤都是是复制的langkeziju的专栏,在此感谢你的博客帮我解决了paramiko密钥登陆Linux的问题。
阅读全文
0 0
- Django中paramiko使用密钥执行命令和上传文件
- python paramiko模块实现远程文件上传文件, 执行命令
- python paramiko 通过密钥文件登陆ssh和听过sftp上传文件
- websocket+Django+python+paramiko实现web页面执行服务器命令和脚本
- Django开发过程中,文件的上传和使用
- [Python]paramiko实时获取命令执行输出及sftp上传
- paramiko 远程执行命令
- python使用paramiko和SCPClient进行linux远程控制和上传和下载文件
- Python 使用paramiko实现远程登录Linux主机并执行命令和操作
- maven上传文件和执行linux命令
- python使用paramiko模块实现ssh登录执行命令
- python模块paramiko的上传下载和远程执行命令方法
- python模块paramiko的上传下载和远程执行命令方法
- Paramiko中上传远程文件方法步骤详解
- [Python/自动化运维] 利用Paramiko模块执行批量上传/下载/执行命令/查看服务器列表
- 关于JSch的使用,执行ssh命令,文件上传和下载以及连接方式
- django使用uploadify上传文件
- django使用uploadify上传文件
- 对象的行为(构造函数、方法)
- vue.js基础-声明式渲染和条件与循环
- 【python】函数:函数文档、关键字参数、默认参数、收集参数
- 在Windows下搭建ftp服务
- Windows文件转到linux后,出现中文乱码问题
- Django中paramiko使用密钥执行命令和上传文件
- CBoard框架使用总结五--扩展菜单配置功能
- mysql好书推荐
- iOS展示超大图片或超高分辨率图片崩溃解决方法
- 使用SecureCRT连接Linux时,alt + .等功能键不能使用的解决办法
- 如何判断一个二叉树是否为另一个二叉树的子树
- Android Studio如何关联github以及如何维护md文件
- luogu1115 最大子段和(递推/分治)
- iOS|开发小技巧之UIView创建xib