Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DIY Session Manager
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
geibee
February 25, 2022
Technology
280
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DIY Session Manager
geibee
February 25, 2022
More Decks by geibee
See All by geibee
EKS AnywhereとIAM Anywhereを組み合わせてみた
geibee
0
2.8k
Other Decks in Technology
See All in Technology
スキルと MCP ツール、責務をどう分けるか? AI が迷わないインターフェース設計の戦略
cdataj
1
1.1k
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
330
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
2.2k
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
450
Bedrock AgentCore RuntimeでAuth0 Changelog調査AIをアップグレードした話
t5u8a5a
1
140
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1k
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
140
AAIFに入ってみた ~内から見えるコミュニティ動向~
sato4
0
220
Android の公式 Skill / Android skills
yanzm
0
150
2026 TECHFRESH 畢業分享會 - 開發日常大解密!從領域驅動到企業級上線
line_developers_tw
PRO
0
1k
2026TECHFRESH畢業分享會 - 原生還是跨平台? App 開發踩坑實錄
line_developers_tw
PRO
0
1k
失敗を資産に変えるClaude Code
shinyasaita
0
650
Featured
See All Featured
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
850
The Curious Case for Waylosing
cassininazir
1
390
Statistics for Hackers
jakevdp
799
230k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
Scaling GitHub
holman
464
140k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Marketing to machines
jonoalderson
1
5.4k
The Cult of Friendly URLs
andyhume
79
6.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Technical Leadership for Architectural Decision Making
baasie
3
410
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
560
Transcript
DIY Session Manager 氏名 竹中 太基 経歴 学生時代 Web/スマホアプリ開発 2019年4月~
ヤフー入社、サーバーサイドエンジニア 2021年7月~ BTC入社、AWSエンジニア AWS初心者ですがよろしくお願いします! GitHub: regmarmcem
モチベーション ・EC2インスタンスにSSOで接続したい ・Session Managerを用いない 参考: DIY Single Sign-On for SSH
https://smallstep.com/blog/diy-single-sign-on-for-ssh/ EC2 step cli step ca IdP on Fargate ①IdPにサインイン ②SSH証明書 ③証明書認証 実装を通して、インスタンスにログインするとはそもそもどういうことなのか知る Session ManagerではAWSの資格情報でSSHのような操作が可能 →Session ManagerのGUIはヒントになりそう
Session Managerとは Systems Managerの一機能 ➢ EC2インスタンスへのGUI等でのアクセス ➢ 秘密鍵やパスワードの認証を必要としない GUIで数クリックすれば、踏み台なしで任意のインスタンスを操作できる インスタンス選択
Session Managerタブを開く 接続完了
ユーザーの端末 EC2インスタンス AWSの内部システム HTTPS HTTPS※ Session Managerの接続の流れ HTTPS経由でAWSの踏み台に接続し、AWSの内部ネットワーク経由でEC2に接続 # 443のOUTPUTを遮断すると接続できなくなる
$ sudo iptables –A OUTPUT -p tcp --dport 443 -j DROP $ aws ssm start-session --target <instance-id> --document-name AWS-StartSSHSession –debug # 22のOUTPUTを遮断しても接続できる $ sudo iptables –A OUTPUT -p tcp –dport 22 -j DROP $ aws ssm start-session --target <instance-id> --document-name AWS-StartSSHSession –debug GUI/CLIで共通 Internet AWSの内部ネットワーク
今回扱う範囲 ユーザーの端末 HTTPS Internet AWS CLI # ssm-userでログインされる $ aws
ssm start-session --target <instance-id> --document-name AWS-StartSSHSession – parameters ‘portNumber=%p’ func (s *Session) Execute(log log.T) (err error) { (中略) if err = s.OpenDataChannel(log); err != nil { log.Errorf("Error in Opening data channel: %v", err) return } } 参考 https://github.com/aws/session-manager-plugin # ec2-userでログインされる $ ssh –i <path-to-key> ec2-user@<instance-id> -o ProxyComand=“sh –c <上記のコマンド>” session-managerプラグインのWebSocketとブラウザを接続する Proxy Commandを用いる場合
xterm.jsを使った実装 $ aws ssm start-session --target <instance-id> --debug b'{"SessionId":“<session-id>", “StreamUrl”:“wss://ssmmessages.ap-northeast-1.amazonaws.com/v1/data-channel/<params>”,
"TokenValue":“<token-value>"}' 1. セッション情報を取得 参考 https://xtermjs.org/ 2. WebSocketオブジェクトをxterm.jsのTerminalに渡す ・ブラウザでTerminalを実装するOSS ・Azure Cloud Shell, VSCode, RStudioをはじめ多くの採用例
None
まとめ ・Session ManagerのGUIはWebSocketで通信している →SSH over HTTPSという概念もあるらしいので試してみたい ・ソースコードを読むのも大事 GitHub: regmarmcem AWS
CLI WebSocket ご清聴ありがとうございました