天天看點

SSHException: Error reading SSH protocol banner

當我在使用ssh  遠端connect 另一台機器的server 時出現了錯誤,錯誤如下,起初以為是自己代碼寫的有問題,後來本地了一下看了跑的沒問題,我就開始根據報錯去查尋原因, 

SSHException: Error reading SSH protocol banner

起初在論壇部落格看到這篇文章,試着看了下意思就是你的self.banner預設源碼時間設定隻有15s  讓我修改源碼在transform.py 然後離線安裝paramiko ,試了後還是報上面的錯,試了下還是沒什麼用網友的技術貼并不是都實用還得靠自己啊,這裡的問題可以排除了,繼續找原因,檢視sshd端口

paramiko   Exception: Error reading SSH protocol banner

 File "/usr/local/lib/python3.5/site-packages/paramiko/transport.py", line 2044, in _check_banner

    buf = self.packetizer.readline(timeout)

修改:self.banner_timeout = 15

self.banner_timeout = 300

下載下傳:https://src.fedoraproject.org/repo/pkgs/python-paramiko/ 源碼. 我選了:paramiko-1.15.2.tar.gz

tar -xzvf  paramiko-1.15.2.tar.gz

cd paramiko-1.15.2  cd parakimo

vim transport.py   :s/self.banner_timeout 修改為:300  (按N 下一個)

cd ..

python3 setup.py build

python3 setup.py install

3.查詢sshd port 配置

ssh localhost 顯示端口竟然是36000

ssh: connect to host localhost port 36000: No route to host

為了确認配置是不是被人改了檢查sshd配置:

vi   /etc/ssh/sshd_conf 

一臉的黑線,你懂的端口預設這裡是22 被人改成了36000 

SSHException: Error reading SSH protocol banner

重新修改代碼port 問題解決:

def run():


    ip = '192.168.110.136'
    port = 36000

    pwd = 'admin'
    user = 'root'
    client = SshConnect(ip, user, pwd, port)
    res = client.exe_cmd('pwd&&cd /usr/local&&pwd')  # type should be str
    log.info(res)