SSHとは「Secure Shell」の略で、ネットワークに接続された機器を遠隔操作し、管理するための手段です。ポイントはSecure(安全)に!で、そのために必要な仕組みが用意されています。この記事では初心者の方にも分かるように、あらためてSSHの概要や設定方法などの基本を解説します。
目次
SSHとは?
SSHの設定や利用方法について説明する前に、まずは基本をおさえましょう。
なぜSSHを使うか?
VPS(バーチャル・プライベート・サーバー.)などの各種サーバー機器は、ほとんどの場合、操作をする人から離れた場所にあります。そのため、この操作をする人だけが安全にインターネット経由で接続できる手段が必要になります。
なぜなら、万一悪意をもった人がサーバーにログインできてしまうと、サーバー内ではやりたい放題となり、さまざまなリスクの原因となるからです。第三者に金銭的な被害を及ぼす犯罪に結びつくこともあるでしょう。
そこでSSHを利用して、本来の管理目的で対象のサーバーへ安全に接続し、操作する手段が使われています。
SSHは難しいか?
レンタルサーバーではあまり使われていないため、難しいイメージがあると思います。それでも、比較的簡単な設定方法で、安全性を高める効果があります。適切に無駄なく設定しましょう。
なおふだん使うSSHという用語には、以下のような複数の意味があるため、どれを指しているかを明確にする必要があると考えます。
- SSHでサーバーにログインするための情報(ホスト名、パスワード、認証用ファイルなど)
- ソフトウェアとしてはサーバーとクライアントの両方ある
- WindowsなどのOSからは、専用のクライアントソフトを使って接続する
SSHでサーバーにログインしたら、あとはそれぞれのLinuxコマンドを駆使して、各種サーバーを適正に操作していきます。
SSLとの違い
SSHとSSLとは、慣れてくれば全くの別物とすぐにわかりますが、最初のうちは実は意外と間違いやすいと思います。ともにセキュリティ向上に関連する技術ということでは、たしかに共通していますね。わかりやすい違いは、以下のようにまとめることができます。
SSH | SSL | |
---|---|---|
目的 | サーバーへの接続 | Webサイトを安全に表示 |
主な対象者 | サーバー管理者 | Webサイトの閲覧者 |
SSHの仕組み~認証方法について~
離れた場所にあるサーバーへ安全に接続するため、SSHは複雑にできています。さらに、サーバーへのログインが適正かどうかチェックする認証方法は、複数用意されています。
代表的なものには「パスワード認証方式」と「公開鍵認証方式」の2つあり、SSHの設定方法により選択可能となっています。おおまかな違いは、以下のようにまとめることができます。
パスワード認証方式 | 公開鍵認証方式 | |
---|---|---|
手段 | パスワード | 「公開鍵」など生成したファイル |
安全度 | 比較的低い | 比較的高い |
設定作業の難易度 | 簡単 | 複雑 |
おすすめ度 | △ | ◎ |
パスワード認証方式
この場合パスワードとは、サーバーのユーザーアカウントに設定しているものです。方式としては手軽ですが危険です。このパスワードが流失すると、悪意をもった第三者からサーバーにログインされてしまう可能性があるからです。
なおパスワード認証方式では、パスワードのみを単純に確認しているわけではありません。実はSSHサーバー上では、このあと説明する公開鍵認証方式と共通の複雑な動きをしています。
例えばいくつかのプロセスのあと、SSHサーバーとSSHクライアントの通信内容が暗号化されます。この動作が、SSHと他の手法(FTPやTelnetなど)との大きな違いとなっています。
公開鍵認証方式
初期設定作業が大変ですが、通信の安全性はとても高い方式です。方法はいくつかありますが、「鍵」と呼ばれるファイルをしっかり保管さえすれば、「鍵」のないユーザーからのログインは原則できません。これにより、悪意をもった第三者からの不正なログインを防ぐことができます。
SSHサーバー上での動きは複雑でわかりづらいですが、流れのポイントは、以下のようにまとめることができると思います。
■事前の準備(初回のみ、サーバー管理者が実施)
- 「鍵」作成
- サーバーとクライアントで必要な「鍵」をそれぞれ保管
「鍵」は1つではなく、必ずサーバー用(公開鍵)とクライアント用(秘密鍵)とをペアで作成します。公開鍵をサーバーに届けるためには、確実で安全な方法で実施しましょう。公開鍵が盗まれてしまっては、元も子もありません。
■通常の利用
- SSHクライアントを操作し、SSHサーバーにログインしたい意思を伝える
- 相互に「鍵」を照合し、合っているか確認
- 通信の暗号化などの手続き(暗号化や復号化、それらをするための情報のやりとり)
- 暗号化された通信が開始
SSHサーバーを安全に設定する!
それでは実際にSSHサーバーを設定していきましょう。今回はUbuntu 18.04 LTSを搭載したサーバー機で検証していますが、多くのLinuxディストリビューションに応用が可能です。
Linux 用のSSHクライアントもありますが、複数のサーバー機器を同時に管理など特殊な場合を除いて使わないため、説明を省略しています。
パスワード認証方式の場合
通常ではOSをインストールすると、すぐにSSHサーバーをパスワード認証方式で利用できる状態になっています。より安全な設定にするため、まずは万能なrootでのログインを禁止するように変更します。
【コマンド】
vi /etc/ssh/sshd_config
【コマンド】28行目あたり
PermitRootLogin no
もともとは「without-password」になっていて、rootログインには「鍵」が必要な状態です。上記の設定により、rootでのログイン自体を禁止にして「鍵」も使えないようにします。
設定を保存したら、SSHサーバーを再起動します。
【コマンド】
systemctl restart ssh
公開鍵認証方式の場合
次に「鍵」の作成方法について説明します。「鍵」は、SSHサーバーかSSHクライアントかどちらかで作成します。今回はSSHサーバー側で作成する方法をまとめました。作成はユーザー毎に作成する必要があるため、ユーザーにてログインしているか確認しましょう。
まずは以下のコマンドで「鍵」のペアを作成します。
【コマンド】
ssh-keygen -t rsa
途中passphraseを設定するか聞かれますので、必要に応じて設定しましょう。
「鍵」はサーバー上の~/.ssh/ ディレクトリに、「id_rsa」(秘密鍵)と「id_rsa.pub」(公開鍵)というファイル名で作成されます。
さらに以下のコマンドにて、パーミッションの変更など必要な設定を行います。
【コマンド】
mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
作成されたid_rsa(秘密鍵)を、安全な方法でサーバーに接続するクライアントPCに転送します。WinSCPやFileZillaなどのソフトウェアの利用がおすすめです。手の届くところにサーバー機器がある場合には、USBメモリーなどのメディアも利用できます。
WindowsからSSH接続をする方法
ここからは、Windows OSのクライアント側からサーバーに接続する方法について説明します。
下準備
利用可能なソフトウェアはいくつかありますが、ここではTera Termを使う方法にて解説しています。Tera Termは、Linuxサーバーをコマンド操作で管理する、人気の高い無料ソフトウェアです。こちらをWindows PCにダウンロードとインストールをしておきます。
Tera Termでサーバーに接続する
Tera Termを立ち上げると「新しい接続」画面が表示されます。ホスト欄にサーバーのIPアドレスかホスト名、TCPポート欄にポート番号(初期値は22)を入力して、OKボタンをクリックします。
続いてユーザー名、パスフレーズ(設定した場合のみ)を入力した後、秘密鍵ファイルの場所を指定します。間違いがなければ、OKボタンをクリックします。
【ここに注意!】
- パスフレーズの入力は、秘密鍵の作成時に設定した場合のみ必要です。
- 秘密鍵はログイン時に毎回指定するため、「秘密鍵」ファイルは安全な場所に保管して、忘れないようにしましょう。
以上の操作で、離れた場所にあるサーバーに公開鍵認証方式でログインできます。
より安全なSSH設定例
SSHのポート番号は通常の場合22で、この番号を目指して悪意のあるユーザーが攻撃してくる場合があります。そのためこの番号を変更すれば、攻撃のリスクを減らすことができます。設定方法は以下の通りです。
【コマンド】
vi /etc/ssh/sshd_config
【コマンド】
5行目あたり Port xxxxx
xxxxxの部分に、連想されづらい番号に変えます。設定を保存したら、SSHサーバーを再起動します。
【コマンド】
systemctl restart ssh
【ここに注意!】
- ポート番号は、他のサービスと重複しないものを選択しましょう。
- 変更したポート番号を絶対に忘れないようにしましょう。通常の場合、忘れたら2度と遠隔地からログインができなくなります。
カゴヤVPS利用の場合
これまでの説明にある複雑な設定作業は不要で、簡単に鍵を作成や管理ができるようになっています。サーバーの新規作成に相当する「インスタンスの新規作成」画面にある、「ログイン用認証キー」の追加操作で可能です。 画面上でクリックするだけで、あっという間に秘密鍵が作成でき、「鍵」のダウンロードが可能な状態になります。
チェックテスト
チェックテストを確認する
SSHの代表的な認証方式を2つdiscordで共有ください。