LINUX系統SSH的應用中,放著放著常常出現broken pipe的狀況。
本來一直以為是我的外部網路問題,不過看起來內網也是常常遇到這種訊息斷線的回報。
一度以為我的內網,因為電腦和電腦間的無線AP硬體設備不穩定。
直到用GOOGLE遠端桌面的時候,才發現應該是不正常(網頁遠端沒斷線、但是SSH的terminal畫面斷線)。
類似的訊息大概都像這些:
Write Failed: broken pipe
send disconnect: Broken pipe
目前看到的解法大概有三種。
不過都是一樣的意思,要告訴伺服器,我還再用SSH,只是先空著等不是意外斷線喔。
方式一:
連線的指令加入ServerAliveInterval這個參數,數字為時間的秒數。
指令
ssh -o ServerAliveInterval=60 -p PORT target.location.address
方法二:
在有帳號的連線端或主機端,個人根目錄下的設定檔,加入參數。
nano ~/.ssh/config
加入
Host *
ServerAliveInterval 60
然後存取權限修改一下。
chmod 600 ~/.ssh/config
方法三:
直接SSHD的設定檔加入常態參數。
方法
[CLIENT連線端]
sudo nano /etc/ssh/ssh_config
找該行或尾端加入ServerAliveInterval=60亦可
或者
[SERVER主機端]
sudo nano /etc/ssh/sshd_config
找該行或尾端加入ServerAliveInterval=60亦可
如果仍然會出現斷線,就嘗試再調整秒數值。
我是設定60秒,看起來似乎是OK。