SSH
SSHとは
SSH(Secure Shell)は、ネットワーク越しに別のコンピュータを安全に操作するためのプロトコルです。クラウド上の [[Linux]] サーバーにログインして [[シェルとコマンドライン]] で作業する — この開発・運用の基本動作は、ほぼすべて SSH の上で行われています。標準ポートは 22番 です。
通信はすべて暗号化されるため、途中の経路で盗聴されてもコマンドやパスワードは読み取れません([[暗号化の基礎]])。
公開鍵認証 — パスワードより安全なログイン
SSH のログインには2つの方式があります。
| パスワード認証 | 公開鍵認証 | |
|---|---|---|
| 仕組み | パスワードを送って照合 | 秘密鍵と公開鍵のペアで本人確認 |
| 総当たり攻撃 | 弱い(推測できる) | 事実上不可能 |
| 実務での扱い | 無効化するのが定石 | 標準。こちらを使う |
公開鍵認証では、手元に秘密鍵(絶対に他人に渡さない)、サーバーに公開鍵(渡してよい)を置きます。GitHub に公開鍵を登録して git push するのも、まさにこの仕組みです([[Git]])。
手元のPC(秘密鍵) サーバー(公開鍵を登録済み)
│ 「この公開鍵の持ち主だと証明して」 │
│ ←──────────────────────────────── │
│ 秘密鍵で署名を作って返す │
│ ────────────────────────────────→ │
│ 公開鍵で署名を検証 → ログイン成功
SSHでできること(リモートログイン以外)
- SFTP / scp — 暗号化されたファイル転送。素の [[FTP]] の実質的な後継
- ポートフォワーディング — SSH の暗号化トンネルに別の通信を通す(踏み台サーバー経由の DB 接続など)
- Git のリモート接続 —
git@github.com:...形式の URL は SSH 接続
1本の仕組みの上に転送・トンネル・バージョン管理が乗っている、応用範囲の広い土台技術です。
初学者向けポイント
- 秘密鍵は「家の鍵」そのもの。リポジトリにコミットしない・チャットで送らない
- サーバー運用では「パスワード認証を無効化して公開鍵認証のみ」「rootログイン禁止」が定石
- 22番ポートは攻撃の的になりやすく、[[ファイアウォール]] で接続元を絞るのが基本
- Windows からのGUI付きリモート操作には [[RDP(リモートデスクトップ)]] という別の選択肢がある(SSH はコマンドライン操作向き)
関連技術とのつながり
- [[Linux]] / [[シェルとコマンドライン]] — SSH ログイン後に操作する世界そのもの
- [[暗号化の基礎]] — 公開鍵暗号と署名が SSH の心臓部
- [[Git]] — GitHub への push/pull の標準的な接続手段
- [[FTP]] — SFTP は SSH によるファイル転送(FTP の後継)
- [[ファイアウォール]] — ポート22の防御は運用の基本
Q: SSHの公開鍵認証で、絶対に他人に渡してはいけないのはどれ?
- [ ] 公開鍵
- [x] 秘密鍵
- [ ] サーバーのIPアドレス
解説: 秘密鍵が本人であることの証明そのものです。公開鍵は名前のとおり公開してよい鍵です。
Q: SSHの標準ポート番号はどれ?
- [ ] 21
- [x] 22
- [ ] 443
解説: SSH は22番が標準です(21はFTP、443はHTTPS)。
Q: SSHの仕組みを使った暗号化ファイル転送はどれ?
- [x] SFTP
- [ ] SMTP
- [ ] FTPS
解説: SFTP は SSH のトンネル上でファイル転送を行います(FTPS は FTP+TLS で別物)。