SSH客戶端 (通過密碼連線遠端linux主機)
阿新 • • 發佈:2019-02-10
導讀:
在這篇文章中,主要談及如何利用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”命令,發現一致。