コピペするだけで解決するはずです。
・Mac側かサーバ側かいずれかで実行してください。
・基本Mac側で設定した方が良さそうです。
・サーバのOSはAmazon Linux 2を想定しています。
#Mac側の設定
※サーバに対してSSH接続を行うユーザ毎に設定してください。
(よく分からない人は新規ターミナル画面でそのまま実行してください)
・以下のコマンドを叩いてください。
(右上のコピーマークをクリック)
cat ~/.ssh/config
・「No such file or directory」が出力される場合
echo -e "Host *\nServerAliveInterval 60\nServerAliveCountMax 120\nTCPKeepAlive yes" > ~/.ssh/config && chmod 600 ~/.ssh/config && launchctl stop com.openssh.sshd
・「No such file or directory」が出力されない場合
mv ~/.ssh/config ~/.ssh/config.org && cat ~/.ssh/config.org | sed -e "s/.*ServerAliveInterval.*/ServerAliveInterval 60/g; s/.*ServerAliveCountMax.*/ServerAliveCountMax 120/g" > ~/.ssh/config && launchctl stop com.openssh.sshd
何も表示されなければOKです。
(2時間はタイムアウトしなくなるはずです)
#EC2インスタンス側の設定
※共用で使うサーバの場合は特に注意してください。
※rootユーザで叩いてください
以下のコマンドを叩いてください。
(右上のコピーマークをクリック)
mv /etc/ssh/sshd_config /etc/ssh/sshd_config.org && cat /etc/ssh/sshd_config.org | sed -e "s/.*ClientAliveInterval.*/ClientAliveInterval 60/g; s/.*ClientAliveCountMax.*/ClientAliveCountMax 120/g" > /etc/ssh/sshd_config && service sshd restart
「Redirecting to /bin/systemctl restart sshd.service」が表示されればOKです。
(2時間はタイムアウトしなくなるはずです)
#説明
・「~/.ssh/config」とは
クライアントとしてサーバにSSH接続を行う際の設定ファイルらしいです。
今回で言えば、Mac側で設定するファイルです。
・「/etc/ssh/sshd_config」とは
サーバとしてSSH接続を受け付ける際の設定ファイルらしいです。
今回で言えば、EC2インスタンス側で設定するファイルです。
・今回は上記設定ファイルの「AliveInterval」と「AliveCountMax」という項目を設定しました。
・「AliveInterval」は、サーバやクライアントに対して応答確認する間隔だそうです。
・「CountMax」は、サーバやクライアントに対して応答確認をする回数だそうです。
つまり今回の場合、「AliveIntevel 60」と「AliveCountMax 120」を設定したので、60秒×120回=2時間の間タイムアウトしなくなるはずです。
参考記事:
https://qiita.com/qualitia_cdev/items/b7138b1280e693585267
https://genchan.net/it/pc/mac/11402/
#追記
2021-07-31
「~/.ssh/config」に「Host *」と「TCPKeepAlive yes」を追加しました。