当前位置:首页 » 编程语言 » 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

热点内容
苹果手机备忘录怎么加密 发布:2024-05-19 18:57:57 浏览:15
光荣脚本 发布:2024-05-19 18:57:48 浏览:997
pythonjson字符串 发布:2024-05-19 18:51:43 浏览:253
什么是服务器厂商介绍 发布:2024-05-19 18:50:09 浏览:370
服务器网卡硬件型号怎么看 发布:2024-05-19 18:36:41 浏览:665
修改pve服务器ip 发布:2024-05-19 18:31:52 浏览:468
微信密码忘记了如何取出里面的钱 发布:2024-05-19 18:27:35 浏览:329
vs2005反编译 发布:2024-05-19 18:26:34 浏览:364
ug启动语言脚本 发布:2024-05-19 18:25:57 浏览:874
缓存服务器技术 发布:2024-05-19 18:25:56 浏览:885