テザリングでSSH接続タイムアウトに悩んだ話
最近、ノマドで作業をすることが多くなってきましたが、WiFi環境が見つからないために
仕方なくテザリングで作業することがよくあります。
その際に、(私のスマホだけかもしれないのですが)テザリングでSSH接続すると、
1〜2分程でタイムアウトしてしまい、とても作業できる環境ではありませんでした。
今回はその解決方法についてです。
環境
- スマホ :docomo SO-02F (Xperia Z1f) - クライアント:Macbook Air (OS X 10.10.4) - サーバ :Amazon EC2 (Amazon Linux AMI 2015.03)
タイムアウト値の確認
まずは、何も設定しない状態でSSH接続を行い、タイムアウト値を調べます。
1分経過後
$ ssh -i [EC2インスタンスの認証鍵] ec2-user@[EC2インスタンスのIPアドレス] Last login: xxx xxx xx xx:xx:xx xxxx from xxxxxxxx.xgsspn.imtp.tachikawa.spmode.ne.jp __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/ 33 package(s) needed for security, out of 66 available Run "sudo yum update" to apply all updates. $ $
1分後にEnterを押しましたが、まだSSH接続は切断されていません。
2分経過後
$ ssh -i [EC2インスタンスの認証鍵] ec2-user@[EC2インスタンスのIPアドレス] Last login: xxx xxx xx xx:xx:xx xxxx from xxxxxxxx.xgsspn.imtp.tachikawa.spmode.ne.jp __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/ 33 package(s) needed for security, out of 66 available Run "sudo yum update" to apply all updates. $ Write failed: Broken pipe
2分後にEnterを押すと、「Write failed: Broken pipe」のメッセージが出力され、
SSH接続が切断されました。
この後、1分半も試しましたが、SSH接続が切断されてなかったため、おそらく
タイムアウト値は2分と思われます。
SSHタイムアウトを抑制する設定
正確には、タイムアウトする前にSSHクライアントから応答確認を行い、
接続をつなぎ止める設定です。
以下のように設定します。
$ grep ServerAliveInterval /etc/ssh_config # ServerAliveInterval 0 ServerAliveInterval 60
ServerAliveInterval [設定値(s)] を設定すると、設定時間間隔でサーバに対して応答確認を行い、
結果としてタイムアウトカウントをリセットできます。
デフォルトのServerAliveInterval 0 だと応答確認を行いません。
タイムアウト値が2分(120秒)なので、今回は60秒間隔に設定しました。
接続テスト
2分経過後もSSH接続が切断されないことを確認します。
$ ssh -i [EC2インスタンスの認証鍵] ec2-user@[EC2インスタンスのIPアドレス] Last login: xxx xxx xx xx:xx:xx xxxx from xxxxxxxx.xgsspn.imtp.tachikawa.spmode.ne.jp __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2015.03-release-notes/ 33 package(s) needed for security, out of 66 available Run "sudo yum update" to apply all updates. $ $
先ほどと同じ方法で確認しましたが、2分経過後もSSH接続は切断されていないようです。
これなら安心して作業に打ち込めます。
まとめ
いかがだったでしょうか。
私はこの設定にだいぶ救われました。
もしかしたら、もっと他にいい手があるかもしれませんので、知っている方は
教えていただければと思います。