-
-
Notifications
You must be signed in to change notification settings - Fork 2k
Description
Hello,
It's been a few days and I'm still struggling with this, I think it's quite a known issue but wasn't able to find a workaround.
Paramiko 1.16.0
Python 3.5.1
Operating System : Archlinux
Below is a simplified version of my actual code that throws the same error :
import os
import paramiko
# Loading ssh configuration to get the IP and user of the desired host (here 'bastion')
cfg = paramiko.SSHConfig()
with open(os.path.expanduser("~/.ssh/config")) as f:
cfg.parse(f)
host_cfg = cfg.lookup('bastion')
sock = paramiko.ProxyCommand("ssh -W %h:%p {}@{}".format(host_cfg.get('user', 'root'), host_cfg.get('hostname')))
# Client Setup
client = paramiko.SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# Connect and execute command
client.connect("my.ip.ad.dr", username='root', sock=sock)
(stdin, stdout, stderr) = client.exec_command("echo 'Hello World !'")
for line in stdout.readlines():
print(line)
client.close()
Note that the whole parsing the ssh config thing is simplified because I know this entry is in the ssh config. (And yes I'm sure the error doesn't come from that because the generated ProxyCommand is correct)
Of course it raises the error when executing the client.connect
line. The ProxyCommand is correct, tested multiple times and works just fine in my ~/.ssh/config
. When using it with the command line, it creates an entry in the logs of my bastion. When using it within paramiko it doesn't generate an entry in the logs.
I also tested using the netcat
approach like this :
sock = paramiko.ProxyCommand("ssh {}@{} nc %h %p".format(host_cfg.get('user', 'root'), host_cfg.get('hostname')))
This time it generates an entry in the logs of my bastion (even though it still raises this error) but closes the connection immediatly.
Anyone having the same issue and could help me with that ?