Python远程控制linux,实现Xshell效果

简介

ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography)。

有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。

由于paramiko属于第三方库,所以需要使用如下命令先行安装

pip3 install paramiko

本篇文章用到python模块是 paramiko

首先我们需要进入到准备好的linux主机(本篇以kali为例)

检查我们的ssh服务是否已经启动:

systemctl status ssh

成功启动效果如下:

 此时的Active是处于running(运行)状态,说明我们已经启动成功了

如果我们的Active是处于dead(停止)状态,说明我们还没有启动ssh服务,只需要以下命令:

systemctl start ssh

在启动好ssh服务以后,我们可以尝试利用xshell去进行链接验证:

  • 如果xshell可以链接成功,说明我们的环境就准备好了
  • 如果xshell不能链接成功,说明我们的环境依然存在问题:
    • 可能问题1:网络不通导致的xshell链接不成功,可以尝试使用ping命令去进行检查网络通不通畅
    • 可能问题2:密码错误导致的xshell链接不成功,可以在我们的linux中执行passwd命令直接去修改密码
    • 可能问题3:ssh默认是禁止root进行登录的,此时我们需要去修改ssh的配置文件

问题3的解决方法:
     

修改ssh的配置文件

打开ssh配置文件:vim /etc/ssh/sshd_config

修改PermitRootLogin这一行:将前面的注释#去掉,再将后面的no改为yes即可

 随后保存退出配置文件,之后再把ssh服务重新启动(不重新启动,配置文件不生效)

重启ssh服务:systemctl restart ssh

这样我们的环境就搭建好了,可以继续向下进行操作,下面的操作均为pycharm中的操作:

# coding=utf-8
import paramiko
# 定义要攻击的目标主机ip
ip_addr='192.168.31.250'
# 定义端口号
ip_port=22
# 定义用户名
ip_user='root'
# 定义密码
ip_passwd='123456'
# 创建一个链接对象
client=paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 链接SSH服务端
client.connect(ip_addr,ip_port,ip_user,ip_passwd)
#在远程服务端要执行的操作
while True:

    user_cmd=input("请输入要执行的命令或者q退出:")

    if user_cmd.lower()=="q":

        break

    stdin,stdout,stderr=client.exec_command(user_cmd)

    result=stdout.read().decode()

    print(result)

client.close()

set_missing_host_key_policy():设置远程服务器没有在know_hosts文件中记录时的应对策略。目前支持三种策略:

  1. AutoAddPolicy 自动添加主机名及主机密钥到本地HostKeys对象,不依赖load_system_host_key的配置。即新建立ssh连接时不需要再输入yes或no进行确认
  2. WarningPolicy 用于记录一个未知的主机密钥的python警告。并接受,功能上和AutoAddPolicy类似,但是会提示是新连接
  3. RejectPolicy 自动拒绝未知的主机名和密钥,依赖load_system_host_key的配置。此为默认选项

exec_command():在远程服务器执行Linux命令的方法。

这样我们就实现了我们想要的效果了。

参考资料:

Python模块学习-Paramiko

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值