12-07-2021 11:44 PM
Hi,
I took the Programming fundamentals (Module 2 of Learn network programmability basics)--Python Part 3. Tried to run the example provided by the course. api_ncclient_examply.py. It always gave me the below error:
(py3-venv) [devnet@localhost python_part_3]$ python api_ncclient_example.py
Exception: Error reading SSH protocol banner[Errno 104] Connection reset by peer
Traceback (most recent call last):
File "/home/devnet/py3-venv/lib/python3.6/site-packages/paramiko/transport.py", line 2211, in _check_banner
buf = self.packetizer.readline(timeout)
File "/home/devnet/py3-venv/lib/python3.6/site-packages/paramiko/packet.py", line 380, in readline
buf += self._read_timeout(timeout)
File "/home/devnet/py3-venv/lib/python3.6/site-packages/paramiko/packet.py", line 607, in _read_timeout
x = self.__socket.recv(128)
ConnectionResetError: [Errno 104] Connection reset by peer
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/devnet/py3-venv/lib/python3.6/site-packages/paramiko/transport.py", line 2039, in run
self._check_banner()
File "/home/devnet/py3-venv/lib/python3.6/site-packages/paramiko/transport.py", line 2216, in _check_banner
"Error reading SSH protocol banner" + str(e)
paramiko.ssh_exception.SSHException: Error reading SSH protocol banner[Errno 104] Connection reset by peer
Traceback (most recent call last):
File "/home/devnet/py3-venv/lib/python3.6/site-packages/paramiko/transport.py", line 2211, in _check_banner
buf = self.packetizer.readline(timeout)
File "/home/devnet/py3-venv/lib/python3.6/site-packages/paramiko/packet.py", line 380, in readline
buf += self._read_timeout(timeout)
File "/home/devnet/py3-venv/lib/python3.6/site-packages/paramiko/packet.py", line 607, in _read_timeout
x = self.__socket.recv(128)
ConnectionResetError: [Errno 104] Connection reset by peer
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/devnet/py3-venv/lib/python3.6/site-packages/ncclient/transport/ssh.py", line 328, in connect
self._transport.start_client()
File "/home/devnet/py3-venv/lib/python3.6/site-packages/paramiko/transport.py", line 660, in start_client
raise e
File "/home/devnet/py3-venv/lib/python3.6/site-packages/paramiko/transport.py", line 2039, in run
self._check_banner()
File "/home/devnet/py3-venv/lib/python3.6/site-packages/paramiko/transport.py", line 2216, in _check_banner
"Error reading SSH protocol banner" + str(e)
paramiko.ssh_exception.SSHException: Error reading SSH protocol banner[Errno 104] Connection reset by peer
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "api_ncclient_example.py", line 38, in <module>
hostkey_verify=False)
File "/home/devnet/py3-venv/lib/python3.6/site-packages/ncclient/manager.py", line 176, in connect
return connect_ssh(*args, **kwds)
File "/home/devnet/py3-venv/lib/python3.6/site-packages/ncclient/manager.py", line 143, in connect_ssh
session.connect(*args, **kwds)
File "/home/devnet/py3-venv/lib/python3.6/site-packages/ncclient/transport/ssh.py", line 330, in connect
raise SSHError('Negotiation failed: %s' % e)
ncclient.transport.errors.SSHError: Negotiation failed: Error reading SSH protocol banner[Errno 104] Connection reset by peer
As the READ.md suggested, I used the sandbox as the below:
CSR1000V Host: sandbox-iosxe-recomm-1.cisco.com
SSH Port: 22
NETCONF Port: 830
RESTCONF Ports: 443 (HTTPS)
Username: developer
Password: C1sco12345
Regards
Ying
12-08-2021 01:53 AM
@yinglu69 the ENG team are looking into an issue with both XE sandbox - as you can see there is an issue with the connection. Please standby whilst the team fixes this. Hope this helps
(venv) $ ssh developer@sandbox-iosxe-recomm-1.cisco.com kex_exchange_identification: read: Connection reset by peer (venv) $ ssh developer@sandbox-iosxe-latest-1.cisco.com kex_exchange_identification: read: Connection reset by peer
12-08-2021 05:54 AM
@bigevilbeardThanks for the quick response. BTW, I had seen the issue for a couple of weeks...
12-08-2021 06:15 AM
@yinglu69 one of the always-on XE sandboxes has a known issue (related to the code train) and give a funky reply to netconf/restconf. When both are back online test the code against both devices and check your results. I can't recall if the issue is the latest or recommend code train.
However, this said, the XE always-on device get a lot of abuse and it could just random bad luck when you ran your code.
Hope this helps.
04-09-2022 12:44 PM
@yinglu69 were you able to resolve the issue? I am having he same problem.
04-10-2022 06:36 PM
I had never been able to resolve the issue and gave up. Suspected that there is something related to China Internet if the US can access it fine.
04-11-2022 08:43 PM
I'm in the US and I'm having issues accessing it. Not sure what's wrong. Anyway, thanks for your response!
06-15-2023 03:04 PM
I ran into this same issue. The problem was I was trying to connect to the Cisco IOSXR repeatedly, too quickly. I think the Cisco IOSXR has rate limiting built into it to stop someone connecting so fast.
I would have to see your code, but you maybe running into the same issue I was. The problem was I would do a get_config on the Cisco IOSXR with ncclient, and use the payload I got back to make decisions to craft my payload (example checking which ace's are in an acl, and building my payload to find an available ace number to send back in). Well, right after my get_config was run, my code would turn around and send to manager.connect with ncclient again. Even though I was properly closing the the first connection, the router slapped my wrist. The rrror you see is basically saying "You cant connect because the router is not letting you".
Workaround: I put at time.sleep(.5) in my code right before ncclient manager.connect ran. This way I rate limited my code. It sucks because its slower but its the only solution I found.
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide