gpt4 book ai didi

python - paramiko 服务器模式端口转发

转载 作者:太空狗 更新时间:2023-10-30 01:34:49 25 4
gpt4 key购买 nike

我需要使用 paramiko 实现一个 ssh 服务器,它只处理像这样的“-R”端口转发请求:

ssh -N -T -R 40005:destination_host:22 user@example.com

据我所知,我必须实现 ServerInterface.check_port_forward_request 并在之后的某个时候创建​​一个套接字并监听指定的端口。任何通过 Channel/Connection 的数据分别进入 Connection/Channel

class Server (paramiko.ServerInterface):
.
.
.
def check_port_forward_request(self, address, port):
'Check if the requested port forward is allowed'
...
return port

def handler(chan, port):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(('', port))
sock.listen(1)
conn, addr = s.accept()

while True:
r, w, x = select.select([conn, chan], [], [])
if conn in r:
data = conn.recv(1024)
if len(data) == 0:
break
chan.send(data)
if chan in r:
data = chan.recv(1024)
if len(data) == 0:
break
conn.send(data)
chan.close()
conn.close()
verbose('Tunnel closed from %r' % (chan.origin_addr,))

thr = threading.Thread(target=handler, args=(chan,server_port))
thr.setDaemon(True)
thr.start()

这是实现服务器端 paramiko ssh 端口转发背后的总体思路吗?我应该在 check_port_forward_request 或其他地方启动线程吗?

最佳答案

这是来自 Paramiko 的反向端口转发来源的一个工作示例:

https://github.com/paramiko/paramiko/blob/master/demos/rforward.py

关于python - paramiko 服务器模式端口转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13579616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com