#1752·paramiko

paramiko.ssh_exception.SSHException: Error reading SSH protocol banner

Author: SuchismitaGoswamiCreated Sep 23, 2020Updated Jun 30, 2026

I am using paramiko to ssh into a private ec2 machine via a bastion host. The bastion host is a managed instance by AWS system manager. While creating ssh session using paramiko with ProxyCommand "aws ssm start-session --target [bastion-host-instance-id] --document AWS-StartSSHSession --parameters portNumber=22", I am getting this debug log as below.

2020-09-22 15:31:31,082 | paramiko.transport           | DEBUG | starting thread (client mode): 0x1f692748
2020-09-22 15:31:31,083 | paramiko.transport           | DEBUG | Local version/idstring: SSH-2.0-paramiko_2.7.2
2020-09-22 15:31:41,154 | paramiko.transport           | DEBUG | Banner:
**2020-09-22 15:31:41,155 | paramiko.transport           | DEBUG | Banner: Starting session with SessionId: <<session-id>>**
2020-09-22 15:31:43,171 | paramiko.transport           | ERROR | Exception: Error reading SSH protocol banner
2020-09-22 15:31:43,188 | paramiko.transport           | ERROR | Traceback (most recent call last):
2020-09-22 15:31:43,189 | paramiko.transport           | ERROR |   File "/usr/local/lib/python3.6/dist-packages/paramiko/transport.py", line 2211, in _check_banner
2020-09-22 15:31:43,190 | paramiko.transport           | ERROR |     buf = self.packetizer.readline(timeout)
2020-09-22 15:31:43,190 | paramiko.transport           | ERROR |   File "/usr/local/lib/python3.6/dist-packages/paramiko/packet.py", line 380, in readline
2020-09-22 15:31:43,193 | paramiko.transport           | ERROR |     buf += self._read_timeout(timeout)
2020-09-22 15:31:43,194 | paramiko.transport           | ERROR |   File "/usr/local/lib/python3.6/dist-packages/paramiko/packet.py", line 622, in _read_timeout
2020-09-22 15:31:43,194 | paramiko.transport           | ERROR |     raise socket.timeout()
2020-09-22 15:31:43,195 | paramiko.transport           | ERROR | socket.timeout
2020-09-22 15:31:43,196 | paramiko.transport           | ERROR |
2020-09-22 15:31:43,196 | paramiko.transport           | ERROR | During handling of the above exception, another exception occurred:
2020-09-22 15:31:43,197 | paramiko.transport           | ERROR |
2020-09-22 15:31:43,198 | paramiko.transport           | ERROR | Traceback (most recent call last):
2020-09-22 15:31:43,198 | paramiko.transport           | ERROR |   File "/usr/local/lib/python3.6/dist-packages/paramiko/transport.py", line 2039, in run
2020-09-22 15:31:43,200 | paramiko.transport           | ERROR |     self._check_banner()
2020-09-22 15:31:43,200 | paramiko.transport           | ERROR |   File "/usr/local/lib/python3.6/dist-packages/paramiko/transport.py", line 2216, in _check_banner
2020-09-22 15:31:43,201 | paramiko.transport           | ERROR |     "Error reading SSH protocol banner" + str(e)
2020-09-22 15:31:43,202 | paramiko.transport           | ERROR | paramiko.ssh_exception.SSHException: Error reading SSH protocol banner
2020-09-22 15:31:43,202 | paramiko.transport           | ERROR |
2020-09-22 15:31:41,155 | paramiko.transport           | DEBUG | Banner: Starting session with SessionId: <<session-id>>

The above line taken from the detailed log shows that the proxy command ran successfully. However, the _check_banner method of the paramiko client failed to validate.

Could you please assist me in this regard ?