0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何使用Paramiko库来建立SSH连接远程命令?

网络技术干货圈 来源:网络技术干货圈 2023-04-28 09:50 次阅读

Paramiko是Python的一个SSH客户端和服务器库,可以实现SSHv2协议的加密和身份验证功能,支持SFTP和SCP协议。在本文中,我们将介绍如何使用Paramiko库来建立SSH连接、执行远程命令、传输文件等。

安装Paramiko

要使用Paramiko库,我们需要先安装它。可以使用pip命令进行安装:

pipinstallparamiko

建立SSH连接

使用Paramiko库建立SSH连接非常简单,只需指定主机名、用户名和密码即可。以下是一个简单的示例:

importparamiko

ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname',username='username',password='password')

stdin,stdout,stderr=ssh.exec_command('ls')
print(stdout.read().decode())

ssh.close()

在上述示例中,我们首先创建一个SSHClient对象,并将主机名、用户名和密码作为参数传递给connect()方法。然后,使用exec_command()方法执行ls命令,并将结果打印到控制台。最后,我们关闭SSH连接。

执行远程命令

使用Paramiko库执行远程命令也很简单,只需将命令作为字符串传递给exec_command()方法。以下是一个示例:

importparamiko

ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname',username='username',password='password')

command='ls-l'
stdin,stdout,stderr=ssh.exec_command(command)

forlineinstdout.readlines():
print(line.strip())

ssh.close()

在上述示例中,我们使用exec_command()方法执行ls -l命令,并使用readlines()方法读取输出结果,并打印到控制台。需要注意的是,在某些情况下,需要使用strip()方法删除输出结果中的换行符。

eaa70198-e504-11ed-ab56-dac502259ad0.png

传输文件

使用Paramiko库传输文件也很简单,只需使用SFTPClient类即可。以下是一个示例:

importparamiko

ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname',username='username',password='password')

sftp=ssh.open_sftp()
sftp.put('local_file_path','remote_file_path')
sftp.get('remote_file_path','local_file_path')

sftp.close()
ssh.close()

在上述示例中,我们首先创建一个SFTPClient对象,并使用put()方法将本地文件传输到远程主机上。然后,使用get()方法将远程文件传输到本地主机上。最后,我们关闭SFTPClient和SSH连接。

使用密钥认证

除了使用用户名和密码进行身份验证外,我们还可以使用SSH密钥进行身份验证。以下是一个示例:

importparamiko

ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname',username='username',pkey=key)

stdin,stdout,stderr=ssh.exec_command('ls')
print(stdout.read().decode())

ssh.close()

在上述示例中,我们首先使用from_private_key_file()方法加载SSH私钥文件,并将私钥作为参数传递给connect()方法。然后,我们使用exec_command()方法执行ls命令,并将结果打印到控制台。最后,我们关闭SSH连接。

高级选项

Paramiko库还提供了许多高级选项,例如超时、端口转发、密钥管理等。以下是一个示例:

importparamiko

ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname',username='username',password='password',port=22,timeout=10)

#开启端口转发
transport=ssh.get_transport()
local_port=8080
remote_host='google.com'
remote_port=80
transport.request_port_forward('',local_port,remote_host,remote_port)

#密钥管理
key=paramiko.RSAKey.generate(2048)
private_key_string=key.export_key('PEM')
public_key_string=key.get_base64()

ssh.close()

在上述示例中,我们首先使用connect()方法连接到远程主机,并指定了端口号和超时时间。然后,我们使用get_transport()方法获取SSH传输对象,并使用request_port_forward()方法开启端口转发。最后,我们使用generate()方法生成RSA密钥,并使用export_key()和get_base64()方法导出私钥和公钥。

eac8fc4e-e504-11ed-ab56-dac502259ad0.png

结论

在本文中,我们介绍了如何使用Python Paramiko库实现SSH客户端和服务器功能,包括建立SSH连接、执行远程命令、传输文件等。此外,我们还介绍了如何使用SSH密钥进行身份验证,并讨论了一些高级选项。使用Paramiko库,我们可以轻松地编写Python脚本来管理远程服务器和网络设备。





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    8249

    浏览量

    82864
  • SSH
    SSH
    +关注

    关注

    0

    文章

    177

    浏览量

    16093
  • python
    +关注

    关注

    52

    文章

    4697

    浏览量

    83585
  • SCP
    SCP
    +关注

    关注

    0

    文章

    28

    浏览量

    9104

原文标题:网络工程师学Python-34-SSH客户端和服务器库Paramiko

文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【linux篇】ubuntu下的SSH安装与使用

    ,在win端可以通过putty等一些ssh软件进行远程连接。win10系统也可以通过cmd打开dos串口,使用ssh命令
    的头像 发表于 06-13 09:07 3519次阅读

    ssh连接

    Telne服务使用很方便,但是它是通过明文传递信息,所有安全性就不高,目前普遍使用的SSH(SecureShell)进行远程管理 。SSH协议有S
    发表于 03-28 16:38

    【HiKey试用体验】4.通过SSH远程连接Hikey

    行操作,大神都是通过命令行写程序什么的。这里给大家介绍一个炒鸡好用的工具,SSHSSH一句话介绍:可以远程发送命令行到本机,想想如果你不需
    发表于 05-02 20:43

    如何使用SSH远程命令登录香橙派开发板

    地址为了远程登录香橙派开发板,首先需要获取开发板的 IP 地址。我们可以通过串口查看。3.使用 ssh 远程登录香橙派开发板3.1使用 xshell 新建一个
    发表于 05-22 17:16

    ubuntu- python-ssh远程控制jetson nano与单片机串口通信的方法

    笔记本和jetson都是18。04用笔记本连jetson再用python写ssh连接nano,nano上插了板子可进行通信para.pyimport paramiko #创建一个ssh
    发表于 01-19 06:32

    【触觉智能 Purple Pi OH 开发板体验】无网络状态连接ssh解决办法

    管理和操作。 综上所述,我选择是终端命令连接ssh。 connect ssh 先看设备架构 访问百度状态 远程
    发表于 08-20 12:38

    Python+微信一键连接实现远程管理Windows10操作系统的开机和关机

    首先通过微信发送开机指令,这里我使用的是 itchat 程序会调用 Paramiko 库去 SSH 远程到内网的树莓派执行 WakeOnLan 命令去唤醒 Windows 主机。
    的头像 发表于 02-25 09:17 5992次阅读

    Linux上保护 SSH 服务器连接的方法

    SSH 是一种广泛使用的协议,用于安全地访问 Linux 服务器。大多数用户使用默认设置的 SSH 连接连接远程服务器。
    的头像 发表于 08-08 09:55 734次阅读

    如何防止SSH会话断开连接

    SSH连接经常会在几分钟不活动之后,出于安全原因,将会自动断开连接。通过修改一下命令可以让回话保持连接状态。
    的头像 发表于 12-28 09:39 959次阅读

    SSH第1部分:配置SSH以安全连接远程设备

    Secure Shell (SSH) 协议通常用于远程管理,因为它在客户端和远程设备之间提供加密连接,并在两个系统之间启用加密的双向通信路径。几十年来,开发人员一直依靠
    的头像 发表于 01-03 09:45 867次阅读

    [Q3] 没有ssh客户端怎么快速连接

    ,Pkey,Port=22): #基于用户名密钥连接并执行命令 try: SSH = paramiko.SSHClient
    的头像 发表于 01-06 18:14 563次阅读

    推荐6款SSH远程连接工具

    xshell是一个非常强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Windows平台的TELNET 协议。
    的头像 发表于 01-31 09:18 10.7w次阅读

    如何用paramiko登陆服务器并执行命令

    paramiko是用来远程执行命令的模块,
    的头像 发表于 03-03 15:27 720次阅读
    如何用<b class='flag-5'>paramiko</b>登陆服务器并执行<b class='flag-5'>命令</b>

    Linux上建立SSH安全连接的10种方法

    建立 SSH 安全连接的方法是通过 SSH (Secure Shell) 协议建立的加密通道,用于在服务器和客户机之间的安全通信。
    的头像 发表于 05-29 10:29 5431次阅读

    SSH命令详解

    ssh是一种安全的远程登录及传输协议。ssh可用于远程登录、远程文件传输等。ssh是安全的she
    的头像 发表于 06-02 10:00 8559次阅读
    <b class='flag-5'>SSH</b><b class='flag-5'>命令</b>详解