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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
從開發到部署全都交給 AI:實作 AI 驅動的自動化流程
appleboy
0
180
クラウドファンディング版StackChan 3体(4体)をインタラクティブな体験型作品にして展示もした話 / スタックチャンお誕生日会2026
you
PRO
0
220
從觀望到全公司落地:AI Agentic Coding 導入實戰 — 流程整合與安全治理
appleboy
0
160
Comment regagner la souveraineté de vos données tout en étant payé grâce à Nostr !
rlifchitz
0
220
感情と身体を置き去りにしない、エンジニアの生きのこり方 ──いまから、ここから「自分の状態」を扱うという選択
saorimurooka
0
360
SRE歴2ヶ月でも開発6年の知見を活かして、チームで止まっていた環境改善を前に進めた話
a_ono
0
110
2026 AI Memory Architecture
nagatsu
0
580
toB プロダクトから見たWAF
tokai235
0
250
アラート調査向けAIエージェントの本番導入とその後/AI Agents for Alert Investigation: Production Deployment and After
taddy_919
1
250
MySQL & MySQL HeatWave Report - June 2026
freshdaz
0
200
AIエージェントとPhysical AIが拓く製造業の変革(ハノーバーメッセリキャップ)
iotcomjpadmin
0
170
Zenoh on Zephyr on LiteX
takasehideki
2
130
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
11
38k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
260
How to build a perfect <img>
jonoalderson
1
5.7k
The Cost Of JavaScript in 2023
addyosmani
55
10k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.4k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
140
It's Worth the Effort
3n
188
29k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
160
What's in a price? How to price your products and services
michaelherold
247
13k
Believing is Seeing
oripsolob
1
150
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How GitHub (no longer) Works
holman
316
150k
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 ご清聴ありがとうございました