SSH(Secure Shell)は、コンピューターネットワーク上で遠隔地にあるコンピュータやサーバーと「安全に」通信するためのプロトコルです。
わかりやすく言うと、例えば家から会社のサーバルームにあるサーバやルータ等の機器を遠隔操作する際などに利用するのがSSH。
SSHはパスワードやデータを暗号化し通信内容を保護することができるため、SSHを使うことで安全に遠隔地にあるサーバーにログインしてコマンドを実行したり、ファイルの転送を行ったりすることができます。
また、SSHは鍵ペア(公開鍵と秘密鍵)を用いた認証方式を採用しており、Telnetと比較するとセキュリティが強化。IT初心者でも基本的な操作をマスターすれば、便利で安全なリモートアクセスが可能になります。
このページではSSH(Secure Shell)とは何か?をIT初心者向けにわかりやすく簡潔に解説します。
ネットワークエンジニアを目指す方であれば知らないと恥ずかしい超・基本知識の1つです。是非最後までご覧ください。
SSH(Secure Shell)とは?
SSH(Secure Shell)は、コンピューターネットワーク上で他のコンピューターに「安全に」接続するためのプロトコルです。主に、遠隔地にあるサーバーへのログインやコマンドの実行、ファイルの転送などに使われます。SSHはセキュリティ重視で実装されており、不正アクセスやデータの盗聴を防ぐために暗号化技術を使用します。
参考 プロトコルとは?
言葉を変えてざっくり説明すると、家や会社からサーバーに対して遠隔操作(ファイル転送やソフトウェアのダウンロード)を行うために利用する通信プロトコルというイメージ。データ通信の中身が暗号化されて、認証の仕組みも複数持っているのでセキュリティ的にも安心なので、サーバに対する遠隔操作を行う最も主流なプロトコルです。
SSHの動作原理
- 認証
- SSHクライアントがサーバーに接続する際、まずサーバーは自身の身元を証明するためにデジタル証明書をクライアントに提供。これにより、クライアントは接続しているサーバーが正しいことを確認します。
- 暗号化
- クライアントとサーバー間の通信は、暗号化されます。通信を開始する際、両者は共通の暗号化キーを交換し、このキーを使ってデータを暗号化・復号化します。このプロセスは「鍵交換」と呼ばれ、通信の安全性を確保します。
- データ転送
- 暗号化された接続が確立されると、ユーザーはパスワードや公開鍵認証などを使用してサーバーにログインします。認証が成功すると、クライアントはコマンドの実行やファイルの転送などを安全に行うことができます。
SSHのコマンド
言葉だけで説明されてもイメージしづらいと思うので、ちょっと実演してみたいと思います。
SSHを利用し、サーバ上にあるファイルの一覧を取得してみます。
まずは、SSHコマンドを使用して接続先のホスト名またはIPアドレス、ユーザー名、およびポート番号を指定します。
上記の例では "user" はログインするユーザー名、"example.com" は接続先のホスト名、ポート番号は22です。
ssh user@example.com -p 22
参考 TCPとは
パスワードを入力してログインすると、サーバーに接続されプロンプトが表示されるので、ファイルとディレクトリをリストアップするために、"ls -la" と入力してみます。
ls -la
結果がこちら。
total 12 drwxr-xr-x 3 user staff 96 Mar 18 15:16 . drwxr-xr-x+ 44 user staff 1408 Mar 22 13:10 .. -rw-r--r-- 1 user staff 752 Mar 18 15:16 file1.txt
ファイルとディレクトリの詳細情報が表示されます。
→file1.txt
ファイルのパーミッション、オーナー、グループ、サイズ、および最終更新日時が表示されています。
イメージはこんな感じです。やっていることは単純。これを応用する形でファイル転送やソフトウェアのインストール等を実施したりすることができます。
以下に代表的なコマンドの一覧を記載しておきます。
ssh: リモートサーバーにSSH接続を開始する 例:ssh user@example.com scp: ファイル転送 例:scp user@example.com:/path/to/remote/file /path/to/local/destination ssh-keygen: SSHキーペアの生成や管理 例:ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa ssh-copy-id: SSH公開鍵をリモートサーバーにコピー 例:ssh-copy-id user@example.com ssh-add: SSH秘密鍵をエージェントに追加 例:ssh-add ~/.ssh/id_rsa ssh-agent: SSHエージェントを起動 例:ssh-agent bash sftp: セキュアなFTP(File Transfer Protocol)セッションを開始 例:sftp user@example.com sshfs: リモートファイルシステムをマウントします。 例:sshfs user@example.com:/path/to/remote/folder /path/to/local/folder
SSHとTelnetの違い
SSHと同じようなプロトコルにTelnetがあります。どちらもリモートアクセスプロトコルであり、ネットワーク経由で別のコンピューターに接続してコマンドライン操作を行うことができるという点で共通です。
参考 Telnetとは?
ただし、SSHとtelnetには以下のような差異があるので頭に入れておきましょう。
大まかに言うと「SSHの方がセキュリティが高いので、SSHを使いましょう!」ということです。
項目 | SSH | Telnet |
---|---|---|
セキュリティ | データが暗号化されるためセキュリティが向上する | 平文(暗号化せずにそのまま)で接続を行うためデータが傍受される可能性がある |
認証 | 公開鍵認証やパスワード認証をサポートしセキュリティを強化できる | パスワード認証のみをサポートしている |
ポート番号 | ポート番号22を使用する | ポート番号23を使用する |
プロトコル | TCPを使用する | TCPまたはUDPを使用できる |
機能 | ファイル転送やポート転送など様々な機能がある | 機能が限定されており基本的なコマンドライン操作のみが可能 |
ネットワーク学習の決定版(ネットワークエンジニアを目指すなら必見!)
↑ページ数が多く誰でも手軽に読める内容ではありませんが、ネットワークエンジニアであれば、ほぼ全員が一度は読んだことがある超・有料書籍。是非一度読破しておきたい1冊のご紹介です。
読者特典> 0から学ぶネットワーク入門