Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
SSH公開鍵認証 / 02-b-ssh
Search
kaityo256
PRO
March 02, 2026
Education
260
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SSH公開鍵認証 / 02-b-ssh
kaityo256
PRO
March 02, 2026
More Decks by kaityo256
See All by kaityo256
生成AIとの付き合い方/ How to work with AI
kaityo256
PRO
3
1k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
330
What is XAI?
kaityo256
PRO
0
230
勾配ブースティングと決定木の話 / gradient boosting and decision trees
kaityo256
PRO
7
1.9k
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
17
6.1k
この講義について / 00-setup
kaityo256
PRO
3
570
GitHubによるWebアプリケーションのデプロイ / 07-github-deploy
kaityo256
PRO
2
510
演習:Gitの基本操作 / 04-git-basic
kaityo256
PRO
1
760
演習:Gitの応用操作 / 05-git-advanced
kaityo256
PRO
1
460
Other Decks in Education
See All in Education
El Geoparque Mundial UNESCO Volcanes de Calatrava de la Investigación Científica a la Transposición Didáctica en el aula
juanmartin2026
1
58k
Design Guidelines and Models - Lecture 5 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
1.7k
Human Perception and Cognition - Lecture 4 - Human-Computer Interaction (1023841ANR)
signer
PRO
0
1.7k
[2026後期火5] 論理学(京都大学文学部 後期 第3回)「∀ の規則と固有変数条件」
yatabe
0
130
Longitudinal research
aisw77
0
420
Image processing with PDEs
hachama
0
480
Sekolah Sabat - Triwulan 3 2026 - Pelajaran 13
hiola
0
11k
Invest Early, Build Together
rashwhitman
0
960
吉岡研究室紹介(2026年度)
kentaroy47
0
600
[2026後期火5] 論理学(京都大学文学部 後期 第2回)「量化子の導入」
yatabe
0
230
Sekolah Sabat - Triwulan 3 2026 - Pelajaran 12
hiola
0
12k
響け!ユーフォニアムと考える「決め方」/Thinking About Decision-Making with Sound! Euphonium
3l4l5
1
230
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
Un-Boring Meetings
codingconduct
0
490
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
So, you think you're a good person
axbom
PRO
2
2.2k
Into the Great Unknown - MozCon
thekraken
41
2.8k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
340
Designing for Timeless Needs
cassininazir
1
550
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.7k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
880
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Producing Creativity
orderedlist
PRO
348
41k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Transcript
1 27 SSH公開鍵認証 慶應義塾大学理工学部物理情報工学科 渡辺 2026年3月9日 計算物理春の学校2026「計算物理屋のためのGit/GitHub入門」
2 27 リモート接続 パーソナルコンピュータから、別の強力なコンピュータに遠隔から接続したい →リモート接続 自宅や居室 大学やサーバ室にあるサーバ 手元のPCの端末から、遠隔にあるマシンにリモートログインして作業 リモートにあるサーバに直接ログインしているかのよう作業できる リモートログインに使われたのがtelnetやrlogin
3 27 リモート接続とセキュリティ 自宅や居室 大学やサーバ室にあるサーバ telnetやrloginは通信を平文で送受信する user: password インターネットの通信は容易に傍受可能 通信路を傍受すると、接続先、ユーザ名、パスワードなどが全て見えてしまう
セキュアな通信手段が欲しい SSH
4 27 SSHとは SSH (Secure Shell) telnetやrlogin、rsh、ftpなどを代替するために生まれた SSHは規格であり、その実装の一つがOpenSSH $ ssh
–V OpenSSH_9.7p1, LibreSSL 3.3.6 SSHの役割 • 通信路の暗号化 • 全ての通信を傍受されても、盗聴者が内容を復元できないようにする • 認証(ホスト認証、ユーザ認証) • ホスト認証:接続しようとしているホストが正しいことを確認 • ユーザ認証:接続しようとしているユーザが正しいことを確認 接続時のフロー 鍵交換による通信路暗号化 ホスト認証 ユーザ認証 以後の通信は暗号化 ……
5 27 鍵交換 通信路が全て傍受されている前提で、秘密の情報を共有したい Alice Bob 𝑎, 𝐴 𝑏, 𝐵
AliceとBobが鍵のペア(𝑎, 𝐴)と(𝑏, 𝐵)を生成 𝐴 𝐵 𝐵 𝐴 公開鍵𝐴, 𝐵を互いに伝える(傍受可能) 𝑠 = 𝑎𝐵 𝑠 = 𝐴𝑏 𝑠 = 𝑎𝐵 = 𝐴𝑏を計算し、共通の秘密情報とする 𝐴, 𝐵 𝑠 傍受者は通信傍受で得た𝐴, 𝐵から秘密情 報𝑠を再現できない 以上のアルゴリズムをDiffie–Hellman (DH)鍵交換と呼ぶ
6 27 鍵交換 離散対数問題を使った実装例 Alice: 秘密の整数𝑎に対して𝐴 = 𝑔𝑎 mod 𝑝を計算し、公開鍵とする
Bob: 秘密の整数𝑏に対して𝐵 = 𝑔𝑏 mod 𝑝を計算し、公開鍵とする 𝑠 = 𝐵𝑎 mod 𝑝 = 𝑔𝑎𝑏 mod 𝑝 AliceはBobから受け取った𝐵を使って以下を計算する BobはAliceから受け取った𝐴使って以下を計算する 𝑠 = 𝐴𝑏 mod 𝑝 = 𝑔𝑎𝑏 mod 𝑝 傍受者は𝐴, 𝐵の情報から𝑠を計算することができない(離散対数問題) →AliceとBobは、傍受されている通信路を使って秘密の情報𝑠を共有できた 楕円曲線上の演算を用いる Elliptic-curve Diffie-Hellman (ECDH)もよく使われる 𝑔と𝑝は既知とする
7 27 認証 鍵交換により通信路が暗号化されたとしても、通信相手が正しい相手であるか どうかはわからない 公開鍵による認証 クライアントから見てホストは正しい相手か? → ホスト認証 ホストから見てクライアントは正しい相手か?
→ ユーザ認証
8 27 認証とは ある行為を行うことができる権利を確認すること 自分の家には、自分か、自分が許可した人だけ出入りして欲しい 不特定多数が出入りしては困る 鍵を持っている人だけ出入りを許可する →鍵の所持によって「出入りの権利」を「認証」している
9 27 認証の種類 所持認証 知識認証 1234 生体認証 何かを所持していることをもって認証する 例:家の鍵など 何かを知っていることをもって認証する
例:暗証番号やパスワード等 体の一部を利用して認証する 例:指紋認証や顔認証など
10 27 公開鍵認証 (ユーザ認証) Alice Bob Aliceが通信を通じてBobに「いま通信しているのは自分である」と証明したい あらかじめAliceは鍵のペアを作っておき、公開鍵をBobに渡しておく 秘密鍵(署名鍵) 公開鍵(検証鍵)
11 27 公開鍵認証 (ユーザ認証) Alice Bob 1. BobはAliceにメッセージを送る 2. Aliceはメッセージに秘密鍵で
署名をしてBobに送り返す 3. BobはAliceの公開鍵で署名を検証する 4. 検証に成功したら認証完了
12 27 ホスト認証 インターネットは情報がリレーされるので、途中に悪意ある中継点があると 通信路が書き換えられるおそれがある 通信相手が正しいホストであると確認する→ホスト認証 ユーザ認証の前に行われる
13 27 ホスト認証(初回) 初めて接続するホストで、クライアントが公開鍵を持っていない場合 1. ホストから公開鍵が送られてくる 2. この公開鍵を信じるか確認する 3. 鍵を信じる場合(yes)、この鍵を
「知っているホスト」に登録する クライアント ホスト .ssh/known_hosts Are you sure you want to continue connecting (yes/no/[fingerprint])?
14 27 ホスト認証(初回) 1. ホストから公開鍵が送られてくる クライアント ホスト この鍵をどうやって信じるか? GitHubの場合はSSH公開鍵と、そのfingerprintがウェブで公開されている https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/githubs-ssh-key-fingerprints
公開鍵がない状態での初回接続時に表示されたfingerprintを確認する or GitHubが公開している公開鍵を「知ってるホストリスト」に登録してから接続
15 27 ホスト認証(二回目以降) クライアント ホスト ホストが秘密鍵で署名したメッセージを すでに所持している公開鍵で検証 ≠ ホストがなりすましである場合、異なる 公開鍵を送ってくるのでわかる
公開鍵を偽装しても、秘密鍵を持っていな いので公開鍵に対応した署名ができない ≠
16 27 公開鍵認証のまとめ • 公開鍵認証には、署名に使う秘密鍵と、検証に使う公開 鍵のペアを使う • 検証側は、あらかじめ相手の公開鍵を保持しておく • 公開鍵で検証できる形で署名が可能なのは、秘密鍵の所
持者のみ • 正しく署名できた人を「公開鍵に対応する秘密鍵の所持 者である」と認証できる ユーザ認証 ホスト認証 • ホスト認証でも、あらかじめ相手の公開鍵を登録してお くことが望ましい • しかし、初回接続時に公開鍵のフィンガープリントを確 認し、問題なければ登録する、という運用が多い
17 27 SSHエージェント 接続のたびにパスフレーズを入力するのは面倒 → SSHエージェント (1) パスフレーズにより秘密鍵を復号 (2) 復号した秘密鍵をSSHエージェントに記憶してもらう
(3) 次回接続から記憶した秘密鍵を使う(パスフレーズ入力を省略)
18 27 多段SSH ユーザ サーバ まずサーバにログインし、そのサーバからGitHubにアクセスしたい GitHubから見たらサーバが接続元なので、そこに秘密鍵が欲しい しかし、サーバに秘密鍵を置きたくない→SSHエージェント転送
19 27 SSHエージェント転送 ユーザ サーバ ユーザPCの エージェント サーバの エージェント SSHエージェントが署名情報を転送することで、GitHubは接続したクラ
イアントが登録済みの公開鍵の所持者であるとわかる 認証成功 署名リクエスト 署名リクエスト 署名応答 署名応答
20 27 SSHエージェントのまとめ SSHエージェントの役割は以下の2つ 1. 復号済みの秘密鍵を記憶する 2. 別の接続先に署名を転送する SSHエージェントを使うためには、SSHエージェントが起動し、 常駐している必要がある
MacはKeyChainがSSHエージェントを兼ねる Windows (WSL)は別途SSHエージェントを起動する必要がある SSHエージェントの使い方 復号した秘密鍵の記憶には ssh-add SSHエージェント転送をする場合は ssh –Aオプション ログアウトしたら秘密鍵の情報は消える
21 27 GitHubにおける認証 $ git push 所持認証 知識認証 ブラウザからのアクセス ターミナルからのアクセス
22 27 GitHubへのユーザ認証 ターミナルからGitHubにアクセスしたいが 他の人に勝手にアクセスされては困る 正当な権利を持つ人だけがアクセスできるようにしたい →SSH公開鍵認証
23 27 GitHubへのユーザ認証 秘密鍵 公開鍵 (1) 秘密鍵と公開鍵のペアを作成 (2) ブラウザから公開鍵を登録(知識認証) (3)
ターミナルから秘密鍵でアクセス(所持認証) $ git push
24 27 GitHubへのユーザ認証 登録済みの公開鍵に対応する秘密鍵を所持する人だけがアクセスできる → 所持認証
25 27 秘密鍵の暗号化 秘密鍵は電子ファイルなので、容易にコピーされてしまう → 暗号化により守る Abracadabra パスフレーズ もし秘密鍵が流出したとしても、暗号化に用いたパスフレーズが わからなければ秘密鍵が使えない(知識認証)
26 27 秘密鍵の暗号化 (1) ターミナルからGitHubにアクセスしようとする $ git push (2) パスフレーズにより秘密鍵を復号
(3) 秘密鍵を使って認証 パスフレーズによる知識認証でGitHubにアクセスしている わけはないことに注意
27 27 GitHubにおける認証のまとめ • ブラウザからGitHubへのアクセスは知識認証(+α) • ターミナルからGitHubへのアクセスは所持認証 • 秘密鍵はパスフレーズで守られている(知識認証)