使用
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。
Paramiko 本身不支持选择网络接口。
但是您可以使用
sock
的
SSHClient.connect
参数来提供您自己的 socket
用于 SSH 连接。
如何将Python
socket
绑定到接口的详细信息,请参阅:我没有测试过,但它应该是这样的:
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, ...)