はじめに
エンジニアとして働いていると、SSHという言葉を耳にしたことがあると思います。
最初は「SSHって何?どうやって使うの?」と戸惑う方も多いはずです。
この記事では、SSHの仕組みから基本的な使い方まで、初心者の方にもわかりやすく解説します。
SSHとは?
SSH(Secure Shell) とはネットワークを通じて別のコンピュータ(サーバー)に安全に接続するためのプロトコルです。
SSHは安全なのか?
SSHは通信内容を暗号化するため、適切に設定・運用されていれば、通信内容が暗号化されるため、平文のtelnetなどと比べて安全性が高いと言えます。パスワードやコマンドの内容が第三者に盗み見られるリスクを大きく減らせます。
SSHの仕組み
SSHの接続には公開鍵暗号と共通鍵暗号を組み合わせて、安全に鍵を交換し、その鍵を使って通信内容を暗号化します。
接続の流れ:
- クライアントがサーバーに接続要求を送る
-
サーバーがホスト公開鍵を送る(ホスト認証)
- クライアントは受け取った公開鍵のフィンガープリントを表示
- ユーザーが接続先の正当性を確認し、承認すると公開鍵が保存される
- 次回以降、保存された公開鍵と照合することで中間者攻撃を防ぐ
- 鍵交換によりセッション鍵(共通鍵)を生成
- ユーザー認証が行われる(パスワードまたは公開鍵認証)
- 暗号化された通信セッションが確立
画面に表示される「フィンガープリント」は、このホスト公開鍵を短く表現した指紋のようなものです。
サーバー管理者から事前にフィンガープリントを聞いておき、表示されたものと一致するかを確認すると、
なりすましサーバーへの接続を防ぐことができます。
SSHのインストール確認
●インストール確認コマンド【Windows / macOS / Linux】
ssh -V
●実行結果
OpenSSH_9.0p1, LibreSSL 3.3.6
基本的な接続方法
●ホスト名、IPアドレスを指定して接続するコマンド
ssh ユーザー名@ホスト名(またはIPアドレス)
例)
ssh Appuser01@111.111.1.111
ssh Appuser01@example.com
【出力結果】※初回接続時
ssh Appuser01@example.comThe authenticity of host 'example.com (192.168.1.100)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes と入力してEnterを押すと、接続先のホスト公開鍵が ~/.ssh/known_hosts に保存されます。
これにより、次回以降の接続時にサーバーが正当なものかを検証できるようになります。
※パスワード入力時は画面に文字が表示されない仕様です。
●ポートを指定して接続する
SSHのデフォルトポートは 22 ですが、セキュリティのため別のポートを使うサーバーもあります。
ssh -p 2222 user@example.com
接続を切断する
exit
※強制的な切断方法:「Ctrl+D」
よく使うオプション
| オプション | 説明 | 例 |
|---|---|---|
-p |
ポート番号を指定 | ssh -p 2222 user@host |
-i |
秘密鍵ファイルを指定 | ssh -i ~/.ssh/mykey user@host |
-v |
詳細ログを表示(デバッグ用) | ssh -v user@host |
-L |
ローカルポートフォワーディング | ssh -L 8080:localhost:80 user@host |
ファイルの転送(SCP)
●ローカル → リモートへ転送
scp ローカルファイル ユーザー名@ホスト:リモートパス
例)
scp ./memo.txt Appuser01@example.com:/home/Appuser01/
●リモート → ローカルへ転送
scp ユーザー名@ホスト:リモートパス ローカルパス
例)
scp Appuser01@example.com:/home/Appuser01/memo.txt ./
よくあるエラーと対処法
Connection refused
・サーバーのSSHサービスが起動していない可能性があります
・ポート番号が間違っている可能性があります
・ファイアウォールでブロックされている可能性があります
Permission denied (publickey)
・秘密鍵のパスが間違っている可能性があります
・サーバーに公開鍵が登録されていない可能性があります
・-i オプションで正しい秘密鍵を指定してみましょう
終わりに
SSHは現場ではよく聞く単語なもののいざ意味を聞かれると答えることが難しいワードの一つです。最初は難しく感じると思いますが内容を理解し使用してみることですぐに慣れます。
次のステップとしては公開鍵認証の設定にチャレンジしてみてください。セキュリティも向上し、パスワード入力も不要になって、より快適にサーバーを操作できるようになります。
この記事が参考になれば、いいね・ストックよろしくお願いします!
質問や間違いがあれば、コメントで教えていただけると嬉しいです。