Paramiko SSH start_server 函数引发 EOF 错误?
Paramiko SSH start_server function raising EOF error?
我正在尝试使用 paramiko 实现 SSH 服务器,但我一直收到 EOFError
,我不知道为什么
class Ctx(paramiko.ServerInterface):
def check_auth_password(self, username, password):
if password == "1999":
return paramiko.AUTH_SUCCESSFUL
else:
print("[+] Wrong Password...")
return paramiko.AUTH_FAILED
def create_socket():
sock = socket.socket()
return sock
ctx = Ctx()
sock = Ctx.create_socket()
sock.bind(("127.0.0.1", 5555))
server = paramiko.Transport(sock)
server.start_server(server=ctx)
错误是由 start_server
引起的,我不明白为什么。追溯是
Traceback (most recent call last):
File "test.py", line 26, in <module>
server.start_server(server=ctx)
File "/home/khaled/Documents/materials/python/env/lib/python3.8/site-packages/paramiko/transport.py", line 728, in start_server
raise e
File "/home/khaled/Documents/materials/python/env/lib/python3.8/site-packages/paramiko/transport.py", line 2034, in run
self.packetizer.write_all(b(self.local_version + "\r\n"))
File "/home/khaled/Documents/materials/python/env/lib/python3.8/site-packages/paramiko/packet.py", line 367, in write_all
raise EOFError()
EOFError
文档没有显示 start_server
return EOFError
而是 return SSHException
ServerInterface
class ] 文档没有提到这个错误类型,只在 socket()
中提到它,这对我来说似乎很好,它绑定到一个没有错误的端口。 Paramiko 版本 2.7.2
安装在 python 虚拟环境中。
您不能围绕绑定套接字本身创建传输。
接受来自客户端的连接,并围绕 .
创建传输
引用https://github.com/paramiko/paramiko/blob/master/demos/demo_server.py,为简单起见删除了异常处理并添加了一些解释性注释--
# first, we create our listening socket
# but we don't actually wrap it in a transport yet!
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("", 2200))
# next, tell the socket to start listening
# here, we're allowing up to a 100-connection backlog; tune to taste
sock.listen(100)
# here, we're blocking until a client actually connects
print("Listening for connection ...")
client, addr = sock.accept()
# only now, after we have a client, can we create a transport
print("Got a connection!")
t = paramiko.Transport(client, gss_kex=DoGSSAPIKeyExchange)
我正在尝试使用 paramiko 实现 SSH 服务器,但我一直收到 EOFError
,我不知道为什么
class Ctx(paramiko.ServerInterface):
def check_auth_password(self, username, password):
if password == "1999":
return paramiko.AUTH_SUCCESSFUL
else:
print("[+] Wrong Password...")
return paramiko.AUTH_FAILED
def create_socket():
sock = socket.socket()
return sock
ctx = Ctx()
sock = Ctx.create_socket()
sock.bind(("127.0.0.1", 5555))
server = paramiko.Transport(sock)
server.start_server(server=ctx)
错误是由 start_server
引起的,我不明白为什么。追溯是
Traceback (most recent call last):
File "test.py", line 26, in <module>
server.start_server(server=ctx)
File "/home/khaled/Documents/materials/python/env/lib/python3.8/site-packages/paramiko/transport.py", line 728, in start_server
raise e
File "/home/khaled/Documents/materials/python/env/lib/python3.8/site-packages/paramiko/transport.py", line 2034, in run
self.packetizer.write_all(b(self.local_version + "\r\n"))
File "/home/khaled/Documents/materials/python/env/lib/python3.8/site-packages/paramiko/packet.py", line 367, in write_all
raise EOFError()
EOFError
文档没有显示 start_server
return EOFError
而是 return SSHException
ServerInterface
class ] 文档没有提到这个错误类型,只在 socket()
中提到它,这对我来说似乎很好,它绑定到一个没有错误的端口。 Paramiko 版本 2.7.2
安装在 python 虚拟环境中。
您不能围绕绑定套接字本身创建传输。
接受来自客户端的连接,并围绕 .
创建传输引用https://github.com/paramiko/paramiko/blob/master/demos/demo_server.py,为简单起见删除了异常处理并添加了一些解释性注释--
# first, we create our listening socket
# but we don't actually wrap it in a transport yet!
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("", 2200))
# next, tell the socket to start listening
# here, we're allowing up to a 100-connection backlog; tune to taste
sock.listen(100)
# here, we're blocking until a client actually connects
print("Listening for connection ...")
client, addr = sock.accept()
# only now, after we have a client, can we create a transport
print("Got a connection!")
t = paramiko.Transport(client, gss_kex=DoGSSAPIKeyExchange)