【Mac】SSHログイン中に「client_loop: send disconnect: Broken pipe」でフリーズ・ログアウトする事象の解決方法

MacOSの「ターミナル」SSHアクセスをして、放置しておくと、ターミナルがフリーズ・ログアウトする事象が発生します。

SSHが切断される事象を解決したのでメモしておきます。

※本環境はConoHaVPSを使用しています。

MacOSでSSHアクセス後の放置状態からのフリーズ・ログアウトを防ぐ設定

Macの「ターミナル」でSSHアクセスをし、放置しておくとターミナルを使ってもフリーズし、少しすると以下のコメントが表示され、タイムアウトとなります。

$ client_loop: send disconnect: Broken pipe
~ $ 
~ $ 

このSSHアクセス後の「フリーズ」・「ログアウト」の事象ですが、MacOSのSSHコンフィグの設定が原因となります。
WindowsのTeratermでは何もしなくても良いですが、Macではsshのコンフィグファイルに追加設定する必要があります。

要は、SSHコンフィグファイルのIdleタイムアウトさせず、定期的に「KeepAliv」を送信し接続維持させます。

MacOS「ターミナル」を使用したSSHタイムアウトの解決方法

上記でも説明した通り、MacOSの「ターミナル」ではSSH接続をし、ある程度の時間放置状態となるとタイムアウトとなり、SSHが切断されます。

切断を防ぐためにSSHコンフィグに追加設定をします。
まずは、「.ssh」フォルダ配下の「config」ファイルを編集します。

~ $ vim /Users/{PCの名前}/.ssh/config 

コンフィグファイルの中身は以下のようになっており、最終行にKeepAliveの設定を追加します。

Host xxxxxx.com
HostName xxxxxx.com
User root
Port 22
IdentityFile ~/.ssh/20200504153666.pem

Host xxxxxx.com
HostName xxxxxx.com
User root
Port 22
IdentityFile ~/.ssh/known_hosts

#以下を追加
Host *
ServerAliveInterval 60
TCPKeepAlive yes

追加設定の内容

  • Host *:全てのホストを指定
  • ServerAliveInterval:一定期間パケットを送信し、サーバからデータが送られてこないときに、タイムアウトする秒数。
  • TCPKeepAlive:接続状態を継続する場合「yes」、継続しない場合「no」

この設定に関してはVPS接続でも同じようなことがあったのでこちらも参考にしてください。

mac

以上が¥MacOSからのSSH接続がフリーズ・ログアウトする解決方法となります。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!