import socket import paramiko import threading import sys # 资源包引入 host_key= paramiko.RSAKey(filename=‘test_rsa.key‘) #host_key 密钥 class Server(paramiko.ServerInterface):#定义包含类 定义服务器 def __init__(self):#构造函数 默认启动线程 self.event = threading.Event()#就是启动 多线程 def check_channel_request(self,kind,chanid):#定义了 方法 if kind == ‘session‘:#获取方式 return paramiko.OPEN_SUCCEEDED#session 返回 return paramiko.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED#else 开始 返回 def check_auth_password(self,username,password):#定义了密码 检测密码 跟 用户 if(username == ‘justin‘) and (password == ‘lovethepython‘): return paramiko.AUTH_SUCCESSFUL return paramiko.AUTH_FAILED # class 准备 server = sys.argv[1]#获取输入信息 ssh_port = int(sys.argv[2])#获取端口 # 命令行 参数 获取 try:#基础 开始 sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#创建socket 连接 sock.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)#获取数据输入 sock.bind(server,ssh_port)#绑定 发送端口 sock.listen(100)#监听 线程 100 次 print ‘[+] Listen for connection‘#监听 了 开始 client,addr = sock.accept()#接收到的 数据,进行处理 except Exception,e: print ‘[-] Listen failed:‘+str(e)# 否则报错 sys.exit(1)#系统报错 结束进程 print ‘[+] Got a connection!‘# 否则 进行了 连接获取 #开始连接 try:# 大的 尝试 bhSession = paramiko.Transport(client)#ssh 连接 方式 bhSession.add_server_key(host_key)#添加 服务器 的连接密钥 server = Server()# 启动 服务器 class 开始 try:# 尝试 bhSession.start_server(server=server)# 开启服务 except paramiko.SSHException,x:#报错信息了 print ‘[-] SSH negotiation failed.‘# 直接输出 chan = bhSession.accept(20)# 监听 print ‘[+] Authentiacated!‘#权限 认证 print chan.recv(1024)# 获取信息 chan.send(‘Welcome to bh_ssh‘)#发送信息 while True:# 循环等待 try:# 尝试 command = raw_input("Enter command:").strip(‘\n‘)#对输入的信息,然后 进行 转码 if command != ‘exit‘:#如果命令 为 空 chan.send(command)# 发送命令 过去 print chan.recv(1024)+‘\n‘# 然后等待 接收 else: chan.send("exit")# 否则 发送 报错信息 print ‘exiting‘#打印 错误信息 bhSession.close()# 结束 raise Exception (‘exit‘) except KeyboardInterrupt:# 异常报错 bhSession.close()#结束了 except Exception,e: # 大的错误 print ‘[-] Caught exception:‘+str(e)# 提示错误信息 try:# 关闭 连接 bhSession.close() except:# 如果关闭不了了,那就关闭了 pass sys.exit(1)# 系统 报错结束 # 开始发送
时间: 2024-09-30 10:47:47