This demonstrates issue #22. For this to expose the problem, you have to
reconfigure your local sshd to listen only on a IPv4 socket. I had to add
the following line to /etc/ssh/sshd_config
(on a Debian system):
ListenAddress 0.0.0.0
With that change, paramiko can not connect to localhost anymore:
>>> import paramiko >>> client = paramiko.SSHClient() >>> client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) >>> client.connect("localhost")
This lead to the following traceback:
Traceback (most recent call last): File "/usr/lib/python2.7/doctest.py", line 1289, in __run compileflags, 1) in test.globs File "<doctest issue22.rst[3]>", line 1, in <module> client.connect("localhost") File "paramiko/client.py", line 305, in connect retry_on_signal(lambda: sock.connect(addr)) File "paramiko/util.py", line 278, in retry_on_signal return function() File "paramiko/client.py", line 305, in <lambda> retry_on_signal(lambda: sock.connect(addr)) File "/usr/lib/python2.7/socket.py", line 224, in meth return getattr(self._sock,name)(*args) error: [Errno 111] Connection refused
You can check that this is fixed by running the following command from the shell:
$ python -m doctest -v Issue22.rst
With the commit 27b800bf3f1c0ee7063221538d2913cec7c048c1 this gives the following output here:
torsten@pulsar:~/workspace/paramiko$ python -m doctest -v Issue22.rst Trying: import paramiko Expecting nothing ok Trying: client = paramiko.SSHClient() Expecting nothing ok Trying: client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) Expecting nothing ok Trying: client.connect("localhost") Expecting nothing ok 1 items passed all tests: 4 tests in Issue22.rst 4 tests in 1 items. 4 passed and 0 failed. Test passed.