當前位置:首頁 » 編程語言 » pythonssh爆破

pythonssh爆破

發布時間: 2022-06-16 07:45:24

1. 請教下python3 上如何實現級聯ssh

首先,我的windows系統上有python2和python3。使用下面命令切換到python3:

activate py3
1
接著使用下面命令下載相關模塊:

pip install ecdsa
pip install Crypto
pip install paramiko
1
2
3
連接伺服器操作:
# -*- coding: utf-8 -*-
import paramiko
# 伺服器相關信息,下面輸入你個人的用戶名、密碼、ip等信息
ip = ""
port = 22
user = ""
password = ""
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 建立連接
ssh.connect(ip,port,user,password,timeout = 10)
#輸入linux命令
stdin,stdout,stderr = ssh.exec_command("pwd")
# 輸出命令執行結果
result = stdout.read()
print(result)
#關閉連接
ssh.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
如下,運行該程序,可以看到控制台輸出的結果:

2. 如何用python開發一個ssh客戶端工具


1)通過paramiko的ssh模塊連接指定主機;

2)通過SSHClient.exec_command在遠程主機上執行命令;

3)通過exec_command返回的stdout,stdin,stderr進行交互;

4)保存成功連接的主機信息(session),可以通過ls命令查看,sessionid命令,直接啟動新連接;

5)可在windows和linux下運行,寫程序時需要注意他們的差別。
代碼ssh.py

#!/usr/bin/python
#-*-coding:utf-8-*-

importos,sys
importparamiko
importthreading
importplatform

curr_ssh=None
curr_prompt=">>"

#使用說明
defprintUsage():
print"!ls:listsessions."
print"!sessionid:connectsession."
print"!connhostuserpassword:connecthostwithuser."
print"!exit:exit."

#連接
defconn(ip,username,passwd):
try:
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,username,passwd,timeout=5)
print"Connectto",ip,"with",username
globalcurr_prompt
curr_prompt=username+"@"+ip+">>"
returnssh
except:
returnNone

#載入以前的連接信息
sessions=[]
defloadSessions():
globalsessions
try:
f=open("sessions")
sessions=f.readlines()
f.close()
except:
pass

#執行本地命令,ssh.py的命令
defexe_cmd_local(cmd):
if(cmd=="!ls"):
loadSessions()
globalsessions
i=0
print"Sessions:"
forsinsessions:
print"[%d]%s"%(i,s)
i+=1
else:
vals=cmd.split('')
if(vals[0]=="!session"):
id=(int)(vals[1])
if(id<len(sessions)):os_name="platform.system()"new_console_cmd=""if(os_name="=""linux"):="".=""ssh.py="""=""+=""sessions[id]+"""=""elif(os_name="=""windows"):=""sessions[id]=""os.system(new_console_cmd)=""else:=""print="""didn't=""hava=""sessoin=""",vals[1]=""elif(vals[0]="="!conn"):"global=""curr_ssh=""f="open("sessions","a")"line="vals[1]+"""+vals[2]+"="""+vals[3]+" "=""f.write(line)=""f.close()=""#在ssh連接的主機上執行命令=""def=""exe_cmd_ssh(ssh,cmd):=""if(ssh="="none):=""connect=""to=""a=""server.=""use=""'!conn'=""please."=""return=""stdin,=""stdout,=""stderr="ssh.exec_command(cmd)"#stdin.write("y")=""#簡單交互,輸入=""『y』=""#屏幕輸出=""stdout.read()=""stderr.read()=""#入口函數=""if=""__name__="='__main__':"loadsessions()=""if(len(sys.argv)="=4):"printusage()=""while=""true:=""cmd="raw_input(curr_prompt)"if(len(cmd)="=0):"continue=""if(cmd="=""!exit"):=""if(curr_ssh=""!="None):"curr_ssh.close();=""break=""if(cmd[0]="="'!'):=""exe_cmd_local(cmd)=""exe_cmd_ssh(curr_ssh,cmd)<=""pre="">

3. 請教個python執行ssh命令的問題

各位我現在想用python寫個ssh登陸的腳本 現在遇見一個問題就是我不太清楚python如何進行變數替換的(機器間已做好ssh互認)

1.1.1.1是我的時間伺服器
比如說beijing_IP 裡面有兩個IP
1.1.1.2
1.1.1.3

import os
IP_FILE=open('/home/cetvuser/beijing_IP','r')
LINES=IP_FILE.readlines()
for i in LINES:
i=i.strip()
os.system("ssh i;ntpdate 1.1.1.1") 這個地方應該怎麼寫?
IP_FILE.close()

報錯內容如下:
[root@xxx]# ./time.py
ssh: i: Name or service not known
25 Apr 11:42:13 ntpdate[7975]: no server suitable for synchronization found
ssh: i: Name or service not known
25 Apr 11:42:17 ntpdate[7979]: no server suitable for synchronization found
ssh: i: Name or service not known

變數替換,看你要在哪裡替換。給你一個簡單的例子。

  • os.system('ssh %s'%(ip))

  • 復制代碼

  • 這個IP就是你想要的替換的IP。

4. python腳本ssh命令行可以登錄並執行相應命令,但是腳本總是報錯,何解

編輯「/usr/local/python269/lib/python2.6/site-packages/pexpect/__init__.py
」,將「 raise EOF(str(err) + '\n' + str(self))」這段代碼注釋掉,程序正常運行

有些 UNIX 平台,當你讀取一個處於 EOF 狀態的文件描述符時,會拋出異常,注釋掉就可以了

5. Python登錄SSH服務遇到報錯,paramiko.ssh_exception.SSHException: Channel closed.

ssh登錄的時候鏈接埠失敗
這由於server端沒有開機或是網路不通(這個原因很多,最簡單的是網線沒有插。還有就是可能會是網卡down了等)如果是網卡down了ifup相應的網卡再試試

6. python 通過ssh協議批量跑哪個最快

區域網內有一百多台電腦,全部都是linux操作系統,所有電腦配置相同,系統完全相同(包括用戶名和密碼),ip地址是自動分配的。現在有個任務是在這些電腦上執行某些命令,者說進行某些操作,比如安裝某些軟體,拷貝某些文件,批量關機等。如果一台一台得手工去操作,費時又費力,如果要進行多個操作就更麻煩啦。
或許你會想到網路同傳, 網路同傳是什麼?就是在一台電腦上把電腦裝好,配置好,然後利用某些軟體,如「聯想網路同傳」把系統原樣拷貝過去,在裝系統時很有用,只要在一台電腦上裝好,同傳以後所有的電腦都裝好操作系統了,很方便。同傳要求所有電腦硬體完全相同,在聯想的電腦上裝的系統傳到方正電腦上肯定會出問題的。傳系統也是很費時間的,根據硬碟大小,如果30G硬碟,100多台電腦大約要傳2個多小時,反正比一台一台地安裝快!但是如果系統都傳完了,發現忘了裝一個軟體,或者還需要做些小修改,再同傳一次可以,但是太慢,傳兩次半天時間就沒了。這時候我們可以利用ssh去控制每台電腦去執行某些命令。
先讓我們回憶一下ssh遠程登錄的過程:首先執行命令 ssh [email protected] ,第一次登錄的時候系統會提示我們是否要繼續連接,我們要輸入「yes」,然後等一段時間後系統提示我們輸入密碼,正確地輸入密碼之後我們就能登錄到遠程計算機,然後我們就能執行命令了。我們注意到這裡面有兩次人機交互,一次是輸入『yes』,另一次是輸入密碼。就是因為有兩次交互我們不能簡單的用某些命令去完成我們的任務。我們可以考慮把人機交互變成自動交互,python的pexpect模塊可以幫我們實現自動交互。下面這段代碼是用pexpect實現自動交互登錄並執行命令的函數:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pexpect

def ssh_cmd(ip, passwd, cmd):
ret = -1
ssh = pexpect.spawn('ssh root@%s "%s"' % (ip, cmd))
try:
i = ssh.expect(['password:', 'continue connecting (yes/no)?'], timeout=5)
if i == 0 :
ssh.sendline(passwd)
elif i == 1:
ssh.sendline('yes\n')
ssh.expect('password: ')
ssh.sendline(passwd)

7. 如何記錄ssh爆破密碼

要使用SSH免密碼登錄,假設現在有兩台機器hadoop@wang-PC(192.168.10.100),作為A機,hadoop@chen-PC(192.168.10.107),作為B機。現想hadoop@wang-PC通過ssh免密碼登錄到hadoop@chen-PC。 1.在A機下生成公鑰/私鑰對。 [hadoop@wang-PC ~]$ ssh-keygen -t rsa -P '' 敲擊回車鍵即可, 它在/home/hadoop下生成.ssh目錄,.ssh下有id_rsa和id_rsa.pub。 2.把A機器下的id_rsa.pub復制到B機器下的.ssh/authorized_keys文件里。 [hadoop@wang-PC ~]$ scp .ssh/id_rsa.pub [email protected]:/home/hadoop/id_rsa.pub.hadoop_wang [email protected]'s password: 由於還沒有免密碼登錄的,所以要輸入密碼。 3.B機把從A機復制的id_rsa.pub.hadoop_wang添加到.ssh/authorzied_keys文件里。 [hadoop@chen-PC ~]$ cat id_rsa.pub.hadoop_wang >> .ssh/authorized_keys [hadoop@chen-PC ~]$ chmod 600 .ssh/authorized_keys authorized_keys的許可權要是600。 4.A機登錄B機。 [hadoop@wang-PC ~]$ ssh 192.168.10.107 第一次登錄是時要你輸入yes。 現在A機可以無密碼登錄B機了。 小結:登錄的機子可有私鑰,被登錄的機子要有登錄機子的公鑰。這個公鑰/私鑰對一般在私鑰宿主機產生。上面是用rsa演算法的公鑰/私鑰對,當然也可以用dsa(對應的文件是id_dsa,id_dsa.pub) 想讓A,B機無密碼互登錄,那B機以上面同樣的方式配置即可,把B的公鑰復制過去添加到authorized_keys的末尾就行了。 至此完畢。

8. 如何使用 DenyHosts 來阻止 SSH暴力攻擊

Denyhosts是一個Linux系統下阻止暴力破解SSH密碼的軟體,它的原理與DDoS Deflate類似,可以自動拒絕過多次數嘗試SSH登錄的IP地址,防止互聯網上某些機器常年破解密碼的行為,也可以防止黑客對SSH密碼進行窮舉。

眾所周知,暴露在互聯網上的計算機是非常危險的。並不要因為網站小,關注的人少或不惹眼就掉以輕心:互聯網中的大多數攻擊都是沒有目的性的,黑客們通過大范圍IP埠掃描探測到可能存在漏洞的主機,然後通過自動掃描工具進行窮舉破解。筆者的某台伺服器在修改SSH 22號埠之前,平均每天接受近百個來自不同IP的連接嘗試。而DenyHosts正是這樣一款工具。下文將對該工具的安裝與使用方法進行介紹。

DenyHosts阻止攻擊原理
DenyHosts會自動分析 /var/log/secure 等安全日誌文件,當發現異常的連接請求後,會自動將其IP加入到 /etc/hosts.deny 文件中,從而達到阻止此IP繼續暴力破解的可能。同時,Denyhosts還能自動在一定時間後對已經屏蔽的IP地址進行解封,非常智能。

官方網站
Denyhosts的官方網站為:http://denyhosts.sourceforge.net/ (杜絕Putty後門事件,謹記安全軟體官網)

安裝方法

1、下載DenyHosts源碼解壓(目前最新版為2.6)
1 [root@www ~]# wget http://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz
2 [root@www ~]# tar zxvf DenyHosts-2.6.tar.gz
3 [root@www ~]# cd DenyHosts-2.6
2、安裝部署
1 [root@www DenyHosts-2.6]# yum install python -y
2 [root@www DenyHosts-2.6]# python setup.py install
3、准備好默認的配置文件
1 [root@www DenyHosts-2.6]# cd /usr/share/denyhosts/
2 [root@www denyhosts]# cp denyhosts.cfg-dist denyhosts.cfg
3 [root@www denyhosts]# cp daemon-control-dist daemon-control
4、編輯配置文件denyhosts.cfg
1 [root@www denyhosts]# vi denyhosts.cfg
該配置文件結構比較簡單,簡要說明主要參數如下:
PURGE_DENY:當一個IP被阻止以後,過多長時間被自動解禁。可選如3m(三分鍾)、5h(5小時)、2d(兩天)、8w(8周)、1y(一年);
PURGE_THRESHOLD:定義了某一IP最多被解封多少次。即某一IP由於暴力破解SSH密碼被阻止/解封達到了PURGE_THRESHOLD次,則會被永久禁止;
BLOCK_SERVICE:需要阻止的服務名;
DENY_THRESHOLD_INVALID:某一無效用戶名(不存在的用戶)嘗試多少次登錄後被阻止;
DENY_THRESHOLD_VALID:某一有效用戶名嘗試多少次登陸後被阻止(比如賬號正確但密碼錯誤),root除外;
DENY_THRESHOLD_ROOT:root用戶嘗試登錄多少次後被阻止;
HOSTNAME_LOOKUP:是否嘗試解析源IP的域名;
大家可以根據上面的解釋,瀏覽一遍此配置文件,然後根據自己的需要稍微修改即可。
5、啟動Denyhosts
1 [root@www denyhosts]# ./daemon-control start
如果需要讓DenyHosts每次重啟後自動啟動,還需要:
6、設置自動啟動
設置自動啟動可以通過兩種方法進行。
第一種是將DenyHosts作為類似apache、mysql一樣的服務,這種方法可以通過 /etc/init.d/denyhosts 命令來控制其狀態。方法如下:
1 [root@www denyhosts]# cd /etc/init.d
2 [root@www init.d]# ln -s /usr/share/denyhosts/daemon-control denyhosts
3 [root@www init.d]# chkconfig --add denyhosts
4 [root@www init.d]# chkconfig -level 2345 denyhosts on
第二種是將Denyhosts直接加入rc.local中自動啟動(類似於Windows中的「啟動文件夾」):
1 [root@www denyhosts]# echo '/usr/share/denyhosts/daemon-control start' >> /etc/rc.local
如果想查看已經被阻止的IP,打開/etc/hosts.deny 文件即可。

9. 使用python 實現SSH登錄設備時出現問題

解決了啊,不過不是用的
stdin,stdout,stderr=client.exec_command('show arp;show clock')
用這種方法只能弄一條命令
用下面這個
chan= client.invoke_shell()
chan.send('en\n')
chan.send("password\n")
chan.send('show log\n')
result = chan.recv(100000).decode()
用了這個可能還有別的問題,試試吧,不行再討論

10. 求教,python3怎麼通過SSH隧道連接mysql資料庫並執行SQL操作

python3發布以來,獲取了廣大程序員們的差評,說不穩定,又是不兼容什麼的,不過差評歸差評,python3既然已經發布,肯定是個趨勢,但在python3.4裡面,使用原來python2.7的mysqldb已經不能連接mysql資料庫了,比較令人糾結,不過我們可以使用pymysql,來完成連接mysql的重任,步驟如下:序號描述1去github上下載pymysql的安裝包pymysql2解壓到某個盤符下3打開cmd窗口(win環境下),進入pymysql的根目錄下執行命令,pythonsetup.pyinstall4在程序里,導入pymysql5開始連接資料庫資料庫操作的API文檔連接:代碼如下:__author__='qindongliang'#導入pymysql的包importpymysqltry:#獲取一個資料庫連接,注意如果是UTF-8類型的,需要制定資料庫conn=pymysql.connect(host='localhost',user='root',passwd='qin',db='person',port=3306,charset='utf8')cur=conn.cursor()#獲取一個游標cur.execute('select*fromperson')data=cur.fetchall()fordindata:#注意int類型需要使用str函數轉義print("ID:"+str(d[0])+'名字:'+d[1]+"性別:"+d[2])cur.close()#關閉游標conn.close()#釋放資料庫資源exceptException:print("發生異常")結果如下:D:\python\python.exeD:/pythonide/pythonprojectworkspace/python/mysql.pyID:1名字:秦天性別:男ID:2名字:王晶性別:女Processfinishedwithexitcode0

熱點內容
門口機sip伺服器ip是什麼 發布:2024-05-17 17:38:27 瀏覽:553
光遇安卓區是什麼服 發布:2024-05-17 17:22:25 瀏覽:24
linux驅動開發教程 發布:2024-05-17 17:19:52 瀏覽:501
抖音中秋節視頻腳本 發布:2024-05-17 17:19:51 瀏覽:194
快遞櫃為什麼用安卓系統 發布:2024-05-17 17:17:18 瀏覽:907
電腦配置光纖介面怎麼標注 發布:2024-05-17 17:06:56 瀏覽:977
如何用方向鍵控制安卓機 發布:2024-05-17 16:38:11 瀏覽:199
雨田系統源碼 發布:2024-05-17 16:28:06 瀏覽:587
新手直播腳本 發布:2024-05-17 16:27:25 瀏覽:848
python雙引號單引號 發布:2024-05-17 16:19:31 瀏覽:949