TRY AND ERROR

気になったこと、勉強したこと、その他雑記など色々メモしていきます。。Sometimes these posts will be written in English.,

AWS セッションマネージャーでセッション20分制限を回避

AWS セッションマネージャーを使うとIAMユーザーでEC2にログインできるようになります。
(正確にはログインではないのですが。。)

ただ1つ問題があって、何もしない状態が20分続くとセッションが強制的に終了してしまいます。

ユーザーのアクティビティがない場合、20 分後にセッションは終了します。

セッションを終了する - AWS Systems Manager


何もしない状態(=ユーザーのアクティビティがない場合)が20分というのは、ssh繋いだまま昼飯行って放置したりする場合はもちろん、プログラム実行中で放置せざるを得ない場合なども含まれるので、今までのsshの代替として使うのはちょっと厳しいなあと思っていました。

が、この20分の制限を回避する方法がありました。


まず、セッションマネージャーでEC2インスタンスに接続する方法としては、
1) AWSマネジメントコンソール上からブラウザベースのCLIクライアントを使って接続する
2) ローカルのターミナルからSSHクライアントを通じてProxyCommandで接続する
の2つがあります。

1)を使う場合は回避できませんが、2)では以下の設定を追加することで回避できます。

# ~/.ssh/config
# デフォルト以外の名前付きプロファイルを使っている場合、--profile [プロファイル名] で指定する
host i-* mi-*
    ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession 

# ↓ これを追加
ServerAliveInterval 60


ServerAliveIntervalは指定した期間(秒)にサーバーからの応答がない場合に、応答確認をサーバーに送信するというパラメータですが、これを設定することで応答確認のpingがアクティビティと見なされるため、セッションが維持されるようです。