2011-08-26 186 views
42

我能夠通過SSH向我的EC2實例發出命令,這些命令記錄了我應該長期觀看的答案。壞消息是,由於我的閒置狀態,SSH命令在一段時間後關閉,我不再能看到我的實例正在發生什麼。亞馬遜EC2由於不活動而導致的ssh超時

如何在Amazon Linux機器中禁用/增加超時?

錯誤看起來是這樣的:

Read from remote host ec2-50-17-48-222.compute-1.amazonaws.com: Connection reset by peer

回答

9

考慮使用screenbyobu並且問題可能會消失。更重要的是,即使連接丟失,您也可以通過screen -rbyobu -r重新連接並恢復與之前相同的終端屏幕。

byobu是一個屏幕增強,並有一個很好的選項,如EC2成本的估計。

+0

有沒有一個很好的教程這些? EC2主機上都沒有預先安裝,並且從我讀過的內容中可以看出,它們應該在服務器上運行它們。 –

+2

我更喜歡@ brandnewcode的'ServerAliveInterval',如下。我一直在使用tmux,這與屏幕很相似。 tmux的一個非預期的好處是狀態欄上的時鐘每分鐘更新一次,保持連接打開。 tl; dr:'tmux'開始會話,'tmux a'重新連接。 – dannyman

+5

這不應該被標記爲正確的答案,因爲它回答了一個不同的問題。 –

-6

我有10多個定製AMI全部基於亞馬遜Linux AMI,而且我從來沒有遇到由於SSH連接處於非活動狀態而導致的任何超時問題。我有連接保持打開超過24小時,沒有運行一個命令。我認爲亞馬遜Linux AMI中沒有任何超時。

+0

你知道我爲什麼得到這個錯誤嗎? – Roberto

+0

我認爲足以說更多的人超時而不是超時,一個可能的原因是你沒有超時,這是因爲你的ssh有一個客戶端設置,偶爾ping遠程對等設備以保持斷開/從您的連接上重置。 – Jim

26

假設您的Amazon EC2實例在運行Linux(和您正在使用SSH-2,而不是1很可能發生的情況),下面應該工作得得心應手:

  1. 遠程連接到您的EC2實例。

    ssh -i <YOUR_PRIVATE_KEY_FILE>.pem <INTERNET_ADDRESS_OF_YOUR_INSTANCE> 
    
  2. 向實例的SSH服務器配置文件添加一個「client-alive」指令。

    echo 'ClientAliveInterval 60' | sudo tee --append /etc/ssh/sshd_config 
    
  3. 重新啓動或重新加載SSH服務器,以便識別配置更改。

    • Ubuntu Linux操作系統對於命令是..

      sudo service ssh restart 
      
    • 任何其他Linux,不過,以下是可能是正確的..

      sudo service sshd restart 
      
  4. Di sconnect。

    logout 
    

你SSH連接到該EC2實例下一次,那些超級討厭頻繁的連接凍結/超時/分出應該有希望消失。

這對Google Compute Engine實例也有幫助,這些實例帶有類似惱人的默認設置。

警告:請注意,TCPKEEPALIVE設置(這也是存在的)是微妙的,但來自ClientAlive設置,我上面的建議明顯不同,而且從默認改變TCPKEEPALIVE設置實際上可能會傷害你情況而不是幫助。

此處瞭解詳情:http://man.openbsd.org/?query=sshd_config

+2

那應該是'sudo service sshd restart'我想? – CupawnTae

+1

@CupawnTae Ahh,你可能是對的:OP在他的問題中說亞馬遜Linux。事實上,我們應該將其解釋爲參考基於紅帽企業Linux的Amazon Linux AMI--您的拼寫是正確的。 – naki

+0

@CupawnTae ...我在我的Amazon EC2 Linux實例上使用Ubuntu。如果有人使用Ubuntu,他們應該按照我寫的方式拼寫它。 – naki

76

您可以設置保持連接的選項在你的〜/ .ssh /配置您的計算機的主目錄文件:

ServerAliveInterval 50 

亞馬遜AWS通常下降後您的連接只有60秒的不活動,所以這個選項會每隔50秒對服務器進行一次ping操作,並保持連接無限期。

+2

此設置位於客戶端,與AWS服務器相反,對嗎?在答案中值得一提。另外,你確定60秒嗎?這肯定比我的關係需要更長的時間。 – CupawnTae

+1

是的,它在客戶端,在您的* nix計算機上的ssh配置中。我會更新答案,謝謝! 對我來說,這實際上是120秒,但我有一個同事在另一個地區工作,並在60秒內超時。不要問我爲什麼,我不在亞馬遜工作!這就是爲什麼我說「通常」60秒。我認爲建議50秒是謹慎的,因爲1.它幾乎適用於所有人,2.它不會打斷你的網絡連接,它只是一個ping。你可以放10秒,它仍然足夠輕,不會陷入某種服務器禁令。 – mauriciomdea

+0

非常感謝。不活動1分鐘後重新連接是很痛苦的。它幫助了我。 –