當我在使用ssh 遠端connect 另一台機器的server 時出現了錯誤,錯誤如下,起初以為是自己代碼寫的有問題,後來本地了一下看了跑的沒問題,我就開始根據報錯去查尋原因,
起初在論壇部落格看到這篇文章,試着看了下意思就是你的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
重新修改代碼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)