SSH (Secure Shell) は、ネットワークを介して別のコンピュータ(サーバーやVM)にログインし、コマンド操作などを行うためのプロトコルです。通信がすべて暗号化されるため、パスワードや送信データが第三者に盗み見られる心配がありません。
1. SSH接続の2つの認証方式
SSHでログインする際、主に以下の2つの方法が使われます。
A. パスワード認証
- 仕組み: ユーザー名とパスワードを入力してログインする。
- 特徴: 設定が簡単だが、総当たり攻撃(ブルートフォース)に弱いため、公開サーバーでは非推奨。
B. 公開鍵認証(推奨)
- 仕組み: 「公開鍵(サーバーに置く)」と「秘密鍵(自分のPCに置く)」のペア(鍵対)を使う。
- 特徴: 秘密鍵を持っていない限りログイン不可能。非常にセキュア。
2. 実践:SSH接続の手順(CLI)
現代の Windows (PowerShell) や Mac/Linux のターミナルでは、追加ソフトなしで以下のコマンドが使えます。
鍵ペアの作成(自分のPCで1回だけ)
ssh-keygen -t ed25519
※
ed25519は、現代で最も推奨される高速かつ安全な暗号方式です。
接続コマンド
ssh ユーザー名@サーバーのIPアドレス
- 例:
ssh cloud-user@192.168.1.10 - ポート番号がデフォルト(22)でない場合:
ssh -p ポート番号 ユーザー名@IP
3. SSHを便利にするツールと機能
configファイル (~/.ssh/config)
毎回長いIPアドレスを打つのは大変です。設定ファイルに情報を書くと短縮できます。
Host my-server
HostName 192.168.1.10
User cloud-user
IdentityFile ~/.ssh/id_ed25519
これにより ssh my-server だけで接続可能になります。
VS Code Remote - SSH (拡張機能)
これまでのWikiで紹介した最強の組み合わせです。
- 特徴: リモートサーバー上のファイルを、ローカルのVS Codeで開いて直接編集できます。
- 利点: サーバー側でエディタ(Vimなど)の操作を覚える必要がなく、使い慣れたVS Codeの機能がそのまま使えます。
4. SSH以外のリモート接続手法
用途によってはSSH以外の方法も使われます。
| 手法 | 特徴 | 用途 |
|---|---|---|
| SCP / SFTP | SSHの仕組みを利用したファイル転送。 | サーバーへのファイルのアップロード。 |
| RDP (Remote Desktop) | Windows標準の画面共有プロトコル。 | WindowsサーバーのGUI操作。 |
| VNC | Linuxなどのデスクトップ画面を共有。 | GUIが必要なLinux操作。 |
| Mosh (Mobile Shell) | SSHの拡張。通信が不安定な環境でも接続が切れない。 | 移動中の作業やスマホからの操作。 |
5. セキュリティ向上のためのチェックリスト
サーバーを公開する場合、以下の設定(/etc/ssh/sshd_config)を推奨します。
-
パスワードログインの禁止:
PasswordAuthentication no -
rootログインの禁止:
PermitRootLogin no(管理者権限はログイン後にsudoで取得する) -
ポート番号の変更: 標準の
22から別番号(例:20022)に変更するだけで、botによる攻撃を大幅に減らせます。