SSH(Secure Shell)とは?サーバー設定や仕組みを初心者にわかりやすく解説!よく使うコマンドもチェックしよう
セキュアな仕組みで安全性を高める
以前から「セキュリティ意識」は重要なものとされていました。
しかし昨今、その「セキュリティ意識」は更に強まりつつあります。
とにかくセキュアな環境を作るために、企業・個人ともに意識的にセキュリティを重視した環境構築を行う方は少なくありません。
ネットワークはもちろん、ローカルでも非常に高いセキュリティ意識が求められることも多いです。
今回の記事ではネットワークでのセキュリティと深く関係する部分について注目していきます。
サーバーとのセキュアな接続手段である「SSH」について解説。
「SSH」がそもそも何なのかというポイントから、サーバー設定や仕組みを初心者の方にも伝わるよう解説していきます。
また、基礎知識と一緒によく使うコマンドなどについてもチェックしていきましょう。
SSHとは
SSHは、ネットワークに接続されている機器を遠隔操作して管理するための接続方式です。
SSHは「Secure SHell(セキュアシェル)」の略。
リモートコンピューターと通信(遠隔操作)をするために用いられるプロトコルになっています。
ネットワークを経由してサーバーなどと通信し、遠隔操作するための「仕組み」といえるでしょう。
ネットワーク上の通信全てを暗号化するため、認証部分までセキュアな通信を実現しています。
従来の通信プロトコルはリスクがある
従来使用されてきた通信プロトコルであるTelnetやFTPなどでは、認証部分が暗号化されていませんでした。
そのため、パスワードなどが全てそのまま送信されており、悪意のある人にとって容易に情報を盗むことが可能でした。
非常に危険な状態であるため、現在は使用を推奨されていません。
「FTPソフト(FTPクライアント)」は数多く存在していますが、大半はSSHを含めて他のセキュアな通信プロトコルへ対応し始めています。
SSHは通信全てが暗号化されている
SSHは、全ての通信が暗号化されています。
そのため、Telnetなどと比較したときにより安全であるのは誰が見ても明らかです。
遠隔操作をする際にセキュリティ面のリスクは、極限まで減らしておくにこしたことはないといえるでしょう。
シンプルな考え方をするのであれば、SSHは「全てが暗号化されたTelnet」と捉えてもいいかもしれません。
SSHの仕組み:公開鍵暗号方式を採用
SSHは認証部分を「公開鍵暗号方式」を利用し、セキュアな通信を実現しています。
RSA認証により認証情報を盗聴されるリスクが少ないため、安心して通信を行うことができるでしょう。
各ユーザーごとに秘密鍵を保持し、安全性の高い認証を行っています。
SSHのメリット
では、SSHを使うメリットは何があるのでしょうか。
セキュアな通信ができる
既に触れている内容ですが、SSHを利用することでセキュアな通信ができます。
悪意のある第三者からサーバー・通信を未然に防ぐことができるでしょう。
暗号化された通信になるので、通信を盗聴されるリスクを低くすることができます。
安全に遠隔操作し、安心して取り組むことができるでしょう。
これから他のメリットについて紹介していきますが、セキュアな通信ができるというこのポイントが最も大きなメリットです。
高速な通信速度
SSHは高速通信を実現しています。
従来のFTPと比較してみると速度の差は大きいです。
そのためサーバー上へファイルのアップロード・ダウンロードをする待ち時間などを大幅に短縮できる可能性があるでしょう。
サーバー上でファイルを直接編集可能
SSHを利用した通信では、サーバー上のファイルを直接編集可能です。
従来のTelnet・FTPなどであれば、編集したいファイルを一度ローカルにダウンロードする必要がありました。
ダウンロードしたファイルを編集して、再度アップロードしなければならず、非効率的です。
しかしSSHを利用しサーバー上で直接ファイルを編集できれば、ダウンロード・アップロードの工程を省くことができるでしょう。
効率も良く、時間も大幅に短縮できるはずです。
複数ファイルをサーバー上で圧縮する
また、複数ファイルをまとめてダウンロードしたいという場合には、サーバー上で圧縮してしまうことも可能。
圧縮したファイルをダウンロードすることで、複数ファイルを一括ダウンロードできます。
SSHのサーバー設定
さて、SSHを実際にサーバーに設定(導入)する場合に役に立つのがOpneSSHです。
基本的にSSHをインストールするという場合、この「OpenSSH」をインストールすることになります。
では一体、OpenSSHとは何なのでしょうか。
OpenSSHとは
さて、先ほど登場した「OpneSSH」。
「SSH」という単語が含まれていることから推測できる通り、SSHと非常に関係の深いものになっています。
OpneSSHは、暗号化にSSHを使用しているオープンソースソフトウェアです。
リモートログインにSSHを、ファイル転送にSCP、SFTPなどを有しています。
SSHを使うためのソフト
シンプルに捉えれば、OpenSSHはSSHを使うためのソフトウェアといえるでしょう。
SSHプロトコルを実際に使用するために使えるソフトウェアであり、SSHクライアント・SSHサーバーの両方を有しています。
Linuxでは当たり前のように使われているほか、Windowsでも様々な方法で簡単に使用可能です。
無料で使用可能
SSHは従来オープンソースでしたが、SSH2というバージョンから商用利用においてライセンス料が必要です。
しかし、OpenSSHであれば無料で使用でき、SSH2と同等の機能を有しています。
UNIXやLinux系OSにデフォルトでインストールされている
OpenSSHは、多くのUNIX系・Linux系OSにデフォルトでインストールされています。
数多くのマシンで、メンテナンス時などに活躍しているということです。
また、新たに導入をしたいという際にも簡単な手順で導入が可能。
OpenBSDプロジェクトによる検査も行われており、セキュリティ面でも安心できます。
コマンドを紹介
それでは、実際にSSHを動かすために用いるコマンドをチェックしていきましょう。
sshコマンド(SSH接続実行)
SSH接続を実行する際には、以下のsshコマンドを実行します。
- ssh ユーザー名@ホスト名(IPアドレス)
もしくは、こちらのように記述も可能です。
- ssh ホスト名(IPアドレス) -l ユーザー名
ユーザー名は省略が可能
ユーザー名に関しては、コマンドを実行するユーザーとログインしたいユーザーが同じ場合省略することができます。
- ssh ホスト名(IPアドレス)
様々な基本コマンド
続いてより基本的な、便利なコマンドたちをチェックしていきます。
よく使うコマンドとそのオプションについて注目しましょう。
lsコマンドでファイルの一覧表示
ファイルの一覧を表示したい時には「ls」コマンドを実行します。
- ls
「ls」だけで実行できますが、様々なオプションと組み合わせることで、更に具体的に表示内容を指定することが可能です。
例えば「-a」を付ければ、隠しファイルも表示することができるほか「-l」でファイルを詳細に一覧表示できます。
また「-t」を付けると、日付順に並べ替えることも可能。
オプションは複数同時に実行できるので、隠しファイル(-a)と詳細(-l)で一覧を表示する以下のようにコマンドを記述し、実行しましょう。
- ls -al
これで、隠しファイルと詳細に一覧表示が可能になります。
cdコマンドとpwdコマンドでディレクトリを移動・確認
参照しているフォルダの場所(カレントディレクトリ)を移動する際に使うコマンドです。
- cd xxxxx(フォルダ名)
「cd 相対パス」などで移動することもできます。
また、カレントディレクトリを知りたい際には「pwd」とコマンドを実行しましょう。
pwdコマンドを実行すればカレントディレクトリが表示されます。
zipコマンドで圧縮
フォルダおよびファイルをzip形式に圧縮できます。
カレントディレクトリにある「test」というフォルダを圧縮する場合は以下のコマンドを実行します。
- zip test.zip test
上記コマンドを見て分かる通り先に圧縮後のファイル名を指定したのち、圧縮したいフォルダを指定しましょう。
zipコマンドもオプションが豊富に用意されています。
「-r」で再帰的に圧縮したり「-1〜9」で数字を指定することで、圧縮率を指定することも可能です。
unzipコマンドで展開
unzipコマンドを利用して、その名の通りzipファイルを展開(解凍)することができます。
- unzip test.zip
非常にシンプルです。
unzipコマンドにもオプションが用意されています。
「-l」で圧縮ファイルの中身をリスト表示したり、 「-Z」で圧縮情報を表示することなどが可能です。
公開鍵認証を使う場合の「鍵」作成
公開鍵暗号方式を用いた認証を行う場合、当然ですが「公開鍵」と「秘密鍵」を作成しなければななりません。
公開鍵・秘密鍵を作る際に実行するコマンド
その「鍵」を作るコマンドは以下の通りです。
- ssh-keygen -t rsa
公開鍵および秘密鍵のビット数を指定する場合、コマンド末尾に記述することで指定できます。
- ssh-keygen -t rsa 2048
上記コマンドの場合、2048ビットのRSA鍵鍵を作ることができます。
鍵作成後の設定
鍵を作成するコマンドを実行した場合「Enter file in which to save the key (/root/.ssh/id_rsa):」と聞かれます。
これは鍵のパスとファイル名のことを指しています。
デフォルトで問題ありませんが、もしも複数サーバーで鍵を作成している場合被る可能性も生じてくるでしょう。
必要に応じて変更してください。
その後更に「Enter passphrase (empty for no passphrase):」と聞かれます。
こちらは利用者認証のための、パスワードとはまた異なるパスフレーズの設定です。
デフォルトだと未設定ですが、設定した方がよりセキュアになるのは間違いありません。
こちらも必要に応じて設定を加えてもいいでしょう。
デフォルトでは「ホームディレクトリ/.ssh/」に鍵ファイルが作成されます。
この後、パーミッションの確認および変更をすれば完了です。
SSHは安心かつとても便利な通信方式である
今回の記事ではSSHに注目してきました。
昨今、セキュリティ意識が高まっています。
セキュリティ面でリスクにさらされていれば、悪意のある人物から標的にされたとき、無抵抗のまま様々な情報・データを奪われてしまうでしょう。
また、内部の設定などを勝手に変更されてしまう可能性すらあります。
そういった事態に陥ってからでは遅いので、常に高いセキュリティレベルでサーバーなどを固め、セキュアな環境を整えていく必要があります。
そのために有効なのが、今回紹介してきたSSHおよびOpenSSHです。
記事中でも触れた通り、SSHはセキュリティ面以外でも大きなメリットがあります。
便利であるため、作業効率の改善も期待できるプロトコルです。
セキュリティレベル・意識を高め、誰もが安心できるセキュアなネットワークを作る
SSHを導入・活用することで、セキュリティレベルを高めるだけでなく、作業にも取り組みやすい環境を作り出すことができるでしょう。
ぜひ、これから新しくサーバーを運用するという方などはSSHについて知識や理解を深めてください。
そして、既にSSHを利用した環境に身を置いているという方。
今まで以上にSSHについて理解を深め、より高いセキュリティ意識を持って仕事に臨むようにしましょう。
一人一人のセキュリティ意識が高くなれば、その分全体のセキュリティ意識も高くなり、セキュリティレベルも上昇します。
既に十分高い意識を持っているという方は、今後もその高い意識を維持し続けるようにしましょう。
より安全で、安心できるセキュアなネットワークを作り出すために、関わっているエンジニア・ユーザー全員の意識が重要です。
一人一人が協力しあい、より快適で安全なネットワーク・環境を作り出していきましょう。