アルアカ - Arcadia Academia

Arcadia Academiaは「エンジニアリングを楽しむ」を合言葉に日本のデジタル競争力を高めることをミッションとするテックコミュニティです。

SSH(Secure Shell)とは?安全なリモートアクセスの仕組みを解説

Featured image of the post

SSH(Secure Shell)とは、ネットワークを通じて遠隔のコンピュータに安全にアクセスし、操作できるプロトコルです。主にサーバー管理やリモート作業に用いられ、暗号化によってセキュリティを確保します。本記事では、SSHの仕組みや基本的な使い方を解説します。


[目次を開く]

1. SSHの基本概要

SSHは、リモートのコンピュータへ安全に接続するためのプロトコルです。以前はTelnetrloginなどのプロトコルが使われていましたが、これらは通信データが暗号化されず、盗聴や改ざんのリスクがありました。SSHはこの問題を解決し、安全な通信を提供します。

SSHの主な特徴
  • データの暗号化:通信内容を暗号化し、盗聴や改ざんを防止
  • 認証機能:パスワード認証や公開鍵認証により、なりすましを防ぐ
  • リモートコマンド実行:離れた場所からサーバーを操作可能
  • ポートフォワーディング:特定のポートを経由して安全な通信を確立

2. SSHの仕組み

SSHはクライアントサーバー間で通信を行います。例えば、ローカルのPC(クライアント)からリモートのLinuxサーバー(サーバー)へ接続する際にSSHが使われます。

SSHの認証方式

SSHには以下の2つの主な認証方式があります。

  1. パスワード認証
    • ユーザー名とパスワードを入力して認証する方法
    • 比較的簡単だが、総当たり攻撃(ブルートフォース攻撃)のリスクがある
  2. 公開鍵認証(推奨)
    • 公開鍵と秘密鍵(ペアキー)を使って認証する方式
    • 高い安全性があり、パスワード入力が不要になる

3. SSHの基本的な使い方

SSH接続の手順(パスワード認証の場合)

以下のコマンドを使用して、リモートサーバーに接続します。

ssh ユーザー名@サーバーのIPアドレス

例:

ssh user@192.168.1.100

接続するとパスワードの入力を求められ、正しく認証されればリモートサーバーにログインできます。

SSH鍵の作成と公開鍵認証の設定

安全な公開鍵認証を利用するには、以下の手順を行います。

  1. SSH鍵の生成(ローカル環境)
    ssh-keygen -t rsa -b 4096
    • ~/.ssh/フォルダ内に秘密鍵(id_rsa)公開鍵(id_rsa.pub)が作成される
  2. 公開鍵をサーバーにコピー
    ssh-copy-id ユーザー名@サーバーのIPアドレス

    もしくは、手動で公開鍵を~/.ssh/authorized_keysに追加する。

  3. 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を適切に設定し、セキュリティを強化することで、安全なサーバー運用を実現しましょう。

あなたを爆速で成長させるメンタリングプログラムはこちらから↓↓

RUNTEQ(ランテック) - 実践型Webエンジニア養成プログラミングスクールの入会