1. 程式人生 > >SSH客戶端 (通過密碼連線遠端linux主機)

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通:

已經ping通了,現在連線運程主機,命令執行的結果也可以看到了:

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執行,執行結果如下:

3.檢驗是否正確

在linux上執行“ls”命令,發現一致。