SSH客户端 (通过密码连接远程linux主机)

导读:

在这篇文章中,主要谈及如何利用paramiko库,使用密码连接远程linux主机。paramiko是用python语言编写的一个模块,遵循SSH2协议,支持以加密和认证的方式进行远程服务器的连接。

环境:

(1)安装paramiko库:pip install paramiko

(2)python 2.7用来编写代码

(3)在kali-linux上详细配置ssh,见linux环境下ssh的配置

配置好之后,开启ssh:/etc/init.d/ssh start

(4)本地win10、远程kali-linux

代码:

1.方案一

(1)直接使用SSHClient对象的exec_command()在服务端执行命令,在ssh.py添加如下代码:

 

#-*- coding:utf-8 -*- 
import paramiko  

def ssh_command(ip,port,username,password,command):
   # 创建SSH对象
   client = paramiko.SSHClient()
   # 允许连接不在know_hosts文件中的主机
   client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
   # 连接服务器
   client.connect(ip,port,username,password)
   # 直接使用SSHClient对象的exec_command()在服务端执行命令
   stdin,stdout,stderr = client.exec_command(command)
   receive = stdout.read()
   # 打印输出
   print receive.decode('utf-8')
   # 关闭连接
   client.close()

ssh_command('192.168.1.175',22,'root','远程主机登陆密码','ls')

 

(2)在win10运行,用这个代码来连接kali-linux,把执行结果显示在win10。

先测试是否可以ping通:

SSH客户端 (通过密码连接远程linux主机)_第1张图片

 

已经ping通了,现在连接运程主机,命令执行的结果也可以看到了:

SSH客户端 (通过密码连接远程linux主机)_第2张图片

2.方案二

(1)利用SSHClient建立连接的对象得到一个Transport对象,以Transport对象的exec_command()在服务端执行命令,在sshcmd.py添加如下代码(出自python黑帽子 黑客与渗透测试):

 

#-*- coding:utf8 -*-
import paramiko

def ssh_command(ip,port,username,password,command):
    # 创建SSH对象
    client = paramiko.SSHClient()
    # 允许连接不在know_hosts文件中的主机
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 连接服务器
    client.connect(ip,port,username,password)
    #将SSHClient建立连接的对象得到一个Transport对象,
    #以Transport对象的exec_command()在服务端执行命令
    ssh_session = client.get_transport().open_session()
    if ssh_session.active:
        ssh_session.exec_command(command)
        receive=ssh_session.recv(1024)
        print receive.decode('utf-8')
    # 关闭连接
    client.close()
ssh_command('192.168.1.175',22,'root','远程主机登陆密码','ls')

(2)在win10运行,运行结果如下:

SSH客户端 (通过密码连接远程linux主机)_第3张图片

3.检验是否正确

在linux上执行“ls”命令,发现一致。

SSH客户端 (通过密码连接远程linux主机)_第4张图片

 

 

 

 

你可能感兴趣的:(Python)