Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 帕拉米科频道属性错误:';非类型';对象没有属性';recv&x27;_Python_Ssh_Paramiko - Fatal编程技术网

Python 帕拉米科频道属性错误:';非类型';对象没有属性';recv&x27;

Python 帕拉米科频道属性错误:';非类型';对象没有属性';recv&x27;,python,ssh,paramiko,Python,Ssh,Paramiko,我正在创建一个SSH服务器: #make import import sys, threading, socket, paramiko #information about user usern = "dacoder" paswd = "pikachups" #server builder class Server(paramiko.ServerInterface): #initialize build def __init__ (self): self.ev

我正在创建一个SSH服务器:

#make import
import sys, threading, socket, paramiko

#information about user
usern = "dacoder"
paswd = "pikachups"

#server builder
class Server(paramiko.ServerInterface):
    #initialize build
    def __init__ (self):
        self.event = threading.Event()
    def check_channel_request(self, kind, chanid):
        if kind == "session":
            return(paramiko.OPEN_SUCCEEDED)
        return(paramiko.OPEN_FAILED_ADMINISTRATIVELY_PROHIBITED)
    #check password
    def check_auth_password(self, username, password):
        if (username == usern) and (password == passwd):
            return(paramiko.AUTH_SUCCESSFUL)
        return(paramiko.AUTH_FAILED)

#main loop
def looper(ip, port, key, keypassword):
    #create sockets
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #set ssh options for socket
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    #bind socket
    try:
        sock.bind((ip, port))
    except:
        print("error : UNABLE TO BIND SOCKET AT " + str(ip) + ":" + str(port))
        sys.exit()
    #begin listening 
    sock.listen(20)
print("[*] listening . . . \n")
while True:
    #connect to client and get address
    try:
        (client, addr) = sock.accept()
        print("[+] connected to " + addr[0])
    except:
        print("error : CANNOT CONNECT TO CLIENT")
        sys.exit()
    #transport client to paramiko and add server key
    try:
        session = paramiko.Transport(client)
        session.add_server_key(paramiko.RSAKey(filename=key, password=keypassword))
    except:
        print("error : UNABLE TO TRANPORT CLIENT AND//OR ADD SERVER KEY")
        sys.exit()
    #create server instance
    server = Server()
    #start server that we have just created
    try:
        session.start_server(server=server)
    except:
        print("error : CANNOT START SERVER")
        sys.exit()
    #create channel
    channel = session.accept()
    print("[*] authenticated")
    #get data from client
    print("[==>] receiving data from client : ")
    data = channel.recv(1024)
    print(data.decode("utf-8"))
    #send echo to client
    print("[<==] sending echo to client")
    channel.send(data)
    #close session
    session.close()

#cmd line parser
def main():
    #fancy cmd line parsing
    if (len(sys.argv[1:]) != 4) and (len(sys.argv[1:]) != 3):
        print("SSH SERVER\nCREATED BY BENDACODER")
        print("USAGE : \n./SSHserver.py [serverIP] [serverPort] [sshKey] [sshKeyPswd]=optional")
        sys.exit()
    ip = sys.argv[1]
    port = int(sys.argv[2])
    key = sys.argv[3]
    try:
        pswd = sys.argv[4]
    except:
        pswd = None
    looper(ip, port, key, pswd)

#execute in cmd
main()
并通过以下客户端代码连接到服务器:

import paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect("127.0.16.16", port=5005, username="dacoder", password="pikachups")
然后我收到这个错误:

Traceback (most recent call last):
  File "./SSHserver.py", line 99, in <module>
    main()
  File "./SSHserver.py", line 96, in main
    looper(ip, port, key, pswd)
  File "./SSHserver.py", line 74, in looper
    data = channel.recv(1024)
AttributeError: 'NoneType' object has no attribute 'recv'
回溯(最近一次呼叫最后一次):
文件“/SSHserver.py”,第99行,在
main()
文件“/SSHserver.py”,第96行,主目录
活套(ip、端口、密钥、pswd)
文件“/SSHserver.py”,第74行,在活套中
数据=信道.recv(1024)
AttributeError:“非类型”对象没有属性“recv”
我知道当我进入channel=session.accept()时,我没有收到任何消息,但为什么我没有收到?请帮忙。

你有打字错误

paswd=“pikachups”
(paswd中的“某人”)

if(username==usern)和(password==passwd)
(passwd中的两个's'

如果启用了日志记录,您也可以自己发现它:

paramiko.util.log_to_file("filename.log")

谢谢,都修好了。
paramiko.util.log_to_file("filename.log")