標籤:

ssh遠程登陸有時候正常,有時候顯示:ssh_exchange_identification: Connection closed by remote host,這是什麼原因?

root和普通用戶登陸都是這個原因


用ssh -v去連有問題的伺服器,這時會有比較詳細的調試信息在屏幕上輸出,可以幫助判斷是哪一步出了問題。


這個提示是典型的tcp_wrapper配置了不允許你這個ip登錄ssh


解決方案
http://d.hatena.ne.jp/kudakurage/20090324/1237878523
最簡單的解決方法就是讓/etc/hosts.allow 和/etc/hosts.deny裡面的所有信息都不生效,全部註銷掉,重啟SSH服務就可以了.
此類問題。。google、baidu都可以尋找到答案的。


ls -l /etc/ssh #看看這個文件夾下的文件許可權是什麼,如果不是600,運行下面的命令
chmod 600 /etc/ssh/* #運行命令後重啟ssh
ssh還有些應用技巧,可參看這篇簡要的文章 http://blog.freestorm.org/?p=291


echo "sshd: ALL" &>&> /etc/hosts.allow service sshd restart


我和題主遇到過同樣的問題,我是這麼解決的:
把目標機器sshd_config的MaxStartups設置為更高(默認為10),這個應該是最大並發驗證數量。然後重啟sshd。


我也遇到這個問題了,網上說的辦法都不管用,剛試出來辦法。供大家參考。
如果是openwrt內置的dropbear,默認只監聽LAN會出現這個錯誤,改成監聽所有介面即可。如圖:


有沒有安裝 denyhosts ?

這貨默認配置非常嚴格,密碼輸錯一兩次就封IP了。


這個很可能是系統ssh連接數滿了
先運行lsof -i:22
查看ssh連接數量(ESTABLISHED)狀態的數量
vi /etc/ssh/sshd_config
把#MaxStartups 10 的注釋去掉
修改10為更大的數值
重啟sshd服務
service sshd restart


我用putty登錄騰訊雲主機的時候也出現這個問題: connection closed by remote host 。
解決方法如下:
先設置防火牆允許putty程序的程序連接 ,之後每次出現命令界面,我都迅速往命令界面輸入幾個單詞。之後就沒再出現這個問題了。


ps aux|egrep "ssh|scp"|wc -l 看下ssh進程是不是太多了,把配置文件中的MaxStartups值調大重啟ssh服務試下


windows 下 `c:/users/xxx/.ssh/config` 的配置參考如下:

Host http://github.com
User git
HostName http://ssh.github.com
Port 443
IdentityFile /C/Users/xxx/.ssh/id_rsa

劃重點,`HostName`是帶 ssh 的域名。(血的教訓。。。)


你也沒有給出更詳細的問題描述,根據你這個有時候有時候的描述,感覺和這個問題很像:關於雙網卡SSH問題的求教 - Linux論壇 - 51CTO技術論壇_中國領先的IT技術社區,據說是公網IP映射的問題,IP被其他伺服器佔用了。


我在glibc升級過程中觸發了這個問題,ls、cat這些命令都不能用,其他機器可以ping不能ssh「之前有免密」,系統崩了,可以重裝系統。


首先百度一下自己的ip地址,

之後

然後就完事了。

我的是這麼解決的。


我的也是這個錯誤,最後查出來了。。。由於我的區域網內,防火牆設置了某個出口IP為郵件伺服器專用。導至SSH不能使用此IP連接,阿里雲導至。


可以換個埠試試


查看一下

/etc/hosts.allow

/etc/hosts.deny

文件的內容有沒有被修改,關注一下允許訪問和進位訪問的IP段有沒有覆蓋自己的IP。
修改好之後,用

sudo /etc/init.d/ssh restart

或者

sudo service sshd restart

重啟ssh服務。


沒有許可權


這個是許可權的問題 可採取以下兩步解決
chown -R root.root /var/empty/sshd
chmod 744 /var/empty/sshd
service sshd restart
在配置的過程中,首先要檢查網卡,如果可以ping通,但是出現了ssh不上的問題,就需要檢查ssh服務。
在之前的ssh檢查中發現ssh服務無法啟動,這種時候就要檢查 /var/empty/sshd 的許可權,然後通過最上面的三個命令就可以了。

哦,忘記補充了,在最開始應該是先重啟,重啟.....


機器負載太高了


推薦閱讀:

關於Socket API的設計?
Linux 下 socket 編程有什麼需要注意的?
如何用 Nginx 配置透明 HTTP 和 HTTPS 代理?
Epoll的EPOLLOUT事件的一些疑問?

TAG:Linux | SSH |