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がアクティビティと見なされるため、セッションが維持されるようです。