SSH(Secure Shell)とは、ネットワークを通じて遠隔のコンピュータに安全にアクセスし、操作できるプロトコルです。主にサーバー管理やリモート作業に用いられ、暗号化によってセキュリティを確保します。本記事では、SSHの仕組みや基本的な使い方を解説します。
[目次を開く]
1. SSHの基本概要
SSHは、リモートのコンピュータへ安全に接続するためのプロトコルです。以前はTelnetやrloginなどのプロトコルが使われていましたが、これらは通信データが暗号化されず、盗聴や改ざんのリスクがありました。SSHはこの問題を解決し、安全な通信を提供します。
SSHの主な特徴
- データの暗号化:通信内容を暗号化し、盗聴や改ざんを防止
- 認証機能:パスワード認証や公開鍵認証により、なりすましを防ぐ
- リモートコマンド実行:離れた場所からサーバーを操作可能
- ポートフォワーディング:特定のポートを経由して安全な通信を確立
2. SSHの仕組み
SSHはクライアントとサーバー間で通信を行います。例えば、ローカルのPC(クライアント)からリモートのLinuxサーバー(サーバー)へ接続する際にSSHが使われます。
SSHの認証方式
SSHには以下の2つの主な認証方式があります。
- パスワード認証
- ユーザー名とパスワードを入力して認証する方法
- 比較的簡単だが、総当たり攻撃(ブルートフォース攻撃)のリスクがある
- 公開鍵認証(推奨)
- 公開鍵と秘密鍵(ペアキー)を使って認証する方式
- 高い安全性があり、パスワード入力が不要になる
3. SSHの基本的な使い方
SSH接続の手順(パスワード認証の場合)
以下のコマンドを使用して、リモートサーバーに接続します。
ssh ユーザー名@サーバーのIPアドレス
例:
ssh user@192.168.1.100
接続するとパスワードの入力を求められ、正しく認証されればリモートサーバーにログインできます。
SSH鍵の作成と公開鍵認証の設定
安全な公開鍵認証を利用するには、以下の手順を行います。
- SSH鍵の生成(ローカル環境)
ssh-keygen -t rsa -b 4096
-
~/.ssh/
フォルダ内に秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が作成される
-
- 公開鍵をサーバーにコピー
ssh-copy-id ユーザー名@サーバーのIPアドレス
もしくは、手動で公開鍵を
~/.ssh/authorized_keys
に追加する。 - SSH接続(公開鍵認証)
ssh ユーザー名@サーバーのIPアドレス
パスワード入力なしで接続できれば成功。
4. SSHの応用機能
4.1 ポートフォワーディング(トンネリング)
SSHのポートフォワーディングを利用すると、安全な通信経路を確保できます。
ローカルポートフォワーディング
ssh -L [ローカルポート]:[リモートアドレス]:[リモートポート] ユーザー名@サーバーのIPアドレス
例:
ssh -L 8080:localhost:80 user@192.168.1.100
ローカルの8080ポート経由で、リモートのWebサーバー(ポート80)へアクセス可能になります。
リモートポートフォワーディング
ssh -R [リモートポート]:[ローカルアドレス]:[ローカルポート] ユーザー名@サーバーのIPアドレス
この方法を利用すれば、外部からローカル環境のサービスにアクセスできます。
5. SSHのセキュリティ強化
SSHをより安全に運用するために、以下の対策を行いましょう。
1. rootユーザーのSSHログイン禁止
設定ファイル/etc/ssh/sshd_config
で以下を変更:
PermitRootLogin no
2. パスワード認証の無効化(鍵認証の利用)
PasswordAuthentication no
3. 不要なポートの開放を制限
デフォルトの22番ポートを変更するのも有効です。
Port 2222
設定変更後はSSHサービスを再起動してください。
systemctl restart sshd
まとめ
SSHはリモートアクセスのための安全な通信プロトコルであり、サーバー管理者にとって不可欠なツールです。基本的な使い方を押さえつつ、公開鍵認証やポートフォワーディングなどの応用機能を活用することで、より便利で安全なリモート操作が可能になります。
SSHを適切に設定し、セキュリティを強化することで、安全なサーバー運用を実現しましょう。