ウェブサイト検索

クライアントループを修正する方法:送信切断:壊れたパイプエラー


SSH、すなわちセキュアシェルの略は、TCP/IPネットワークを介してサーバーやネットワークデバイスなどのリモートデバイスに安全に接続するために使用されるリモートネットワークプロトコルです。

それは、ネットワーク上の二つのデバイス間の通信を安全にするために強力な暗号化技術とハッシングを提供する暗号ネットワークプロトコルです。

SSHは主に2つの認証方法を使用します:パスワード認証と公開鍵認証です。パスワード認証では、ユーザーはリモートホストのIPアドレスまたはFQDN(完全修飾ドメイン名)とパスワードを提供して認証を行います。

公開鍵認証は、認証のためにSSHキーのペアを使用します。これにはプライベートキーとパブリックキーの2つのSSHキーが含まれます。

秘密鍵はユーザーのマシンに存在し、常に機密で安全に保管されるべきです。公開鍵はユーザーが接続するリモートホストに保存されます。認証中に、二つの鍵の身份が比較され、アクセスが許可されます。

リモートシステムにSSHで接続する際に、Client_loop: send disconnect: Broken pipeというエラーが発生することがあります。

このチュートリアルでは、なぜこれが起こるのかを見て、そのエラーに対処します。

クライアントループ: 切断を送信: 壊れたパイプエラー

そのエラーは単に切断メッセージであり、SSH接続のタイムアウトが超過したことを通知します。

これは、クライアント側からLinuxコマンドが実行または発行されない非活動の期間です。これが発生すると、SSHセッションが終了し、リモートサーバーから切断されます。

ほとんどのユーザーは、アイドルSSHセッションを避け、ホストとの接続が切れないようにするために、通常‘ENTER’キーまたはキーボードのキーを押すでしょう。しかし、これは面倒で時間を浪費する可能性があります。

幸いなことに、SSHのデフォルト設定には、SSH接続を長時間アクティブに保つために設定できるいくつかのパラメータがあります。

クライアントループの修正: 切断送信: 壊れたパイプエラー

この問題を解決するには、クライアントでSSH接続のタイムアウト時間を延長する必要があります。そのためには、通常/etc/ssh/sshd_configにあるデフォルトのSSH設定ファイルを修正してください。

$ sudo vi /etc/ssh/sshd_config

これらの2つのパラメータ、ClientAliveInterval と ClientAliveCountMax を必ず特定してください。それらが何をするのか見てみましょう。

  • ClientAliveInterval – これは、SSHサーバーが接続されているリモートクライアントに生存メッセージを送信するまでの非活動期間です。
  • ClientAliveCountMax – これは、サーバーがクライアントに生存メッセージを送信するために行う試行の回数です。

次のように二つの値を設定します:

ClientAliveInterval	300
ClientAliveCountMax	3

これは、クライアントから最初の300秒(5分)の非活動の後、サーバーがSSHセッションをアクティブに保つためにクライアントにアライブメッセージを送信することを意味します。

クライアントから次の300秒(600秒の時点)でデータや応答が受信されない場合、サーバーは再び生存メッセージを送信します。最後に、クライアントからの非アクティブ状態が900秒続いた場合、SSH接続は終了または切断されます。

ファイルに行った変更を必ず保存してから終了してください。その後、SSHデーモンを再起動します。

$ sudo systemctl restart sshd

あるいは、SSHセッションが最大5分間アクティブであることを意味するServerAliveIntervalパラメータを秒単位(300秒)で指定することによって、リモートクライアントLinuxシステムに接続することもできます。

$ ssh -o ServerAliveInterval=300 username@server_ip_address

このチュートリアルでは、Client_loop: send disconnect: Broken pipeエラーの解決方法を示しました。ご覧のように、SSH設定ファイルにいくつかの調整を行うだけで済みます。

関連記事: