ssh連接linux服務器不斷開- "Write failed: Broken pipe"


 我自己用阿里雲的服務器的時候,發現ssh連上以后,一會不用就斷掉了,非常不方便,服務端的系統是ubuntu. 查了些東西,原來可以去配置服務端的sshd,或者客戶端的ssh,就行了.

 

1,配置服務器端sshd,這樣所有連該服務器的會話都會產生效果

找到

/etc/ssh/sshd_config

添加一行

ClientAliveInterval  30

這樣server端每30s就會向client端發送一個keep-alive包, 來保持連接

還可以加上一行,指定發送keep-alive包的最大次數

ClientAliveCountMax  60

如果發送keep-alive包次數達到60, 而客戶端還沒有反應,則server端的sshd斷開連接

也就是如果什么都不操作,這個配置可以讓連接保持30*60s , 30分鍾

 

 

 

2,如果沒有服務器權限,可以配置客戶端ssh,這樣對這個客戶端發起的所有會話都會產生效果

找到

/etc/ssh/ssh_config

同樣添加上面跟上面了兩個差不多的參數

ServerAliveInterval 
ServerAliveCountMax 

這樣就是ssh向服務端sshd發送keep-alive包

 

 

 

3, 也可以指定某個特定的會話

ssh -o ServerAliveInterval=30  root@192.168.12.192

ssh帶上 -o 參數就可以以配置文件的參數指定這一次會話,  向上面就會一直保持這次會話.

 

 

 

關於SSH

SSH是Secure Shell的縮寫, 是一個應用層的加密網絡協議, 它不只可以用於遠程登錄, 遠程命令執行,還可用於數據傳輸.

當然它由ssh Client和ssh Server端組成, 有很多實現, Ubuntu上就默認安裝的OpenSSH, Client端叫做ssh, Server端叫做sshd.   OpenSSH只用來做遠程登錄和命令執行.

 

1, 把ssh server運行在特殊端口

SSH Server運行的默認端口是22,有時候內部服務器,為了防止外部嘗試連接,會把sshd運行在一個陌生的端口,只對內部開放.

使用 -p

/usr/sbin/sshd -p 2222

或者在sshd配置文件中指定

Port  2222

這時SSH Client去連接也需要指定端口

ssh root@192.168.12.192  -p 2222

 

 

2,scp使用的是ssh協議

另外我們經常用的,用作遠程加密文件傳輸的scp (Secure Copy), 就是使用的SSH協議

scp /home/wangyu/file root@192.168.12.192:/srv/

也就是實際上,scp會做為ssh client先和ssh server確定傳輸通道, 當然默認也是端口22.

如果服務端的ssh server沒有運行,那scp是無法連接成功的

如下是我的測試

 

當然如果ssh server運行在特殊指定的端口,那scp也必須去指定這樣的端口

我們把sshd運行在2222端口,那scp要通過 -P 去指定

scp -P 2222 /home/wangyu/test root@192.168.12.192:/srv/

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM