Python paramiko ssh.connect 指定要绑定的网络接口

问题描述 投票:0回答:1

使用

paramiko.SSHClient()
,我如何指定要绑定的网络接口。我在 ssh 手册页中提到了这个论点:

 -B bind_interface
             Bind to the address of bind_interface before attempting to
             connect to the destination host.  This is only useful on
             systems with more than one address.

换句话说,我想像这样

ssh -B en0 [email protected]
使用
paramiko.SSHClient()
进行 ssh。

python ssh paramiko
1个回答
0
投票

Paramiko 本身不支持选择网络接口。

但是您可以使用

sock
SSHClient.connect
参数来提供您自己的
socket
用于 SSH 连接。

如何将Python

socket
绑定到接口的详细信息,请参阅:
如何在python中将socket绑定到接口(缺少socket.SO_BINDTODEVICE)

我没有测试过,但它应该是这样的:

import paramiko
import socket
import IN

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, IN.SO_BINDTODEVICE, str("en0" + '\0').encode('utf-8'))
sock.connect(("192.168.1.1", 22))
ssh = paramiko.SSHClient()
ssh.connect("192.168.1.1", username=username, sock=sock, ...)
© www.soinside.com 2019 - 2024. All rights reserved.