今回は、「Linux教科書LinuCレベル1」の以下の部分を勉強しましたので、その内容を著作権を侵さない範囲で紹介します
・1.1.3 SSHを使ったリモートログイン
・11.3.1 OpenSSH
SSHは別のコンピュータをリモートで操作するためのものですが、私はパソコンを1台しか持っていないので使用したことがありません
そのため、教科書を何度読んでも理解できず、苦労しました
しかし、この記事をご覧の皆さんは安心してください
私がSSHを理解するために調べた内容を、わかりやすく紹介します
この記事を読めば、私のように苦労することはないでしょう
基本的には、教科書を順番に勉強していきます
また、文中に「参考」として別のページが示されている場合は、それも含めて勉強しています
さらに、勉強の前には必ず「試験直前チェックシート」を読み込むことにしており、その読み込みにかかった時間は10分56秒でした
内容を理解するために必要な用語などの解説
前回同様、まずは勉強する範囲にある用語を調べました
用語を調べてから教科書を読むと、書かれている内容が理解しやすくなります
用語をすべて調べるには時間がかかりますが、みなさんはこの章を読めば用語の意味を調べる必要はありません
勉強の時短になるので、ぜひご活用ください
プロトコル
「通信プロトコル」の略称
コンピュータ同士が情報を通信するためのルール(規格)や手順のこと
web閲覧のHTTP、インターネット接続のTCP/IPなど様々なプロトコルによって、インターネットをスムーズに機能させている
プロトコルの役割は以下の通り
・データの正確な送受信
・異なる機器間(コンピュータとスマホなど)や異なるメーカー製品との相互通信
・ネットワークの安定化
アルゴリズム
問題を解決するための計算方法や処理方法、手順のこと
認証アルゴリズム
「公開鍵」と「秘密鍵」を使って
・本人確認(正しい相手か?)
・データの安全性(改ざんされていないか?)
を確認するアルゴリズム
RSAI、DSA、RSAなどの種類がある
ホスト
リモートで操作(ログイン)される側のサーバー
クライアント
リモートでサーバーを操作(ログイン)しようとしている側のコンピュータ
復号
暗号化されたデータを元の状態にもどすこと
公開鍵暗号方式
「公開鍵」と「秘密鍵」という対になった鍵(SSHキー)を使って、データを暗号化・復号化する暗号方式
公開鍵:だれでも入手できる鍵(サーバーに登録する鍵)
秘密鍵:秘密鍵の発行者しか知ることができない鍵(自分のパソコンに保管する鍵)
この2つの鍵はペアになっており、秘密鍵で暗号化したデータは対応する公開鍵でのみ復号可能
SSH
ネットワークに接続された機器(コンピュータ同士など)を、暗号化通信などで安全に遠隔操作するためのプロトコル
特徴は以下の通り
・強力な認証機能(ユーザー認証による不正アクセス防止)
・強力な暗号化(通信内容を暗号化し、通信経路の盗聴や改ざんの危険性を減らす)
・リモートログインやファイル転送、リモートコマンドの実行など多くの機能を提供
公開鍵暗号方式の認証アルゴリズムの違いにより
・SSH1(バージョン1系)
・SSH2(バージョン2系)
という互換性のない2つのプロトコルがあるが、SSH1は推奨されていない
OpenSSH
SSHプロトコルを利用するためのオープンソースソフトウェア
クライアント側には「openssh-client」を、サーバー側には「openssh-server」をインストールして使用する
多くのLinux系OSにデフォルト(標準)でインストールされているが、openssh-clientしかインストールされていない場合がある
OpenSSHは、「SSH1(バージョン1系)」と「SSH2(バージョン2系)」の2つのプロトコルに対応している
パブリッククラウドサービス
クラウド事業者が提供しているサーバーやソフトウェアをインターネットを使って利用するサービスで、だれでも申し込めば利用できる
ファイル共有やバックアップ、アプリケーション開発&テストやビックデータ分析、業務システムの構築や運用に使われる
パス
ファイルやディレクトリの位置を示す文字列
パスには、絶対パスと相対パスの2種類がある
絶対パス:ルートディレクトリから目的のファイルやディレクトリまでどうたどるのかを表現したパス
相対パス:現在開いているディレクトリ(カレントディレクトリを)かどうたどるのかを表現したパス
例)
自分(user1)のDocumentsディレクトリ内のlinucstudyディレクトリへの絶対パス
/home/user1/Documents/linucstudy
自分(user1)のhomeディレクトリを開いた状態での、Documentsディレクトリ内のlinucstudyディレクトリへの相対パス
Documents/linucstudy
lsコマンド
指定したディレクトリの中身を一覧表示したり、指定したファイルの詳細情報を表示するコマンド
書式
$ ls [オプション] [表示したいディレクトリやファイルのパス(無しの場合は開いてるディレクトリ)]
・現在開いているディレクトリの中身を表示する
$ ls
・現在開いているディレクトリの中身を、隠しファイルも含めて表示する
$ ls -a
・現在開いているディレクトリの中身の詳細情報を表示する
$ ls -l
インスタンス
ここでは、仮想的なコンピュータのこと
チャレンジ文字列(チャレンジコード)
認証する側(サーバー)が認証される側(クライアント)に送付するランダムな文字列
サーバーがクライアントに「本当に秘密鍵を持っているか」を確かめるために送る、一回限りのテスト用データ
勉強した内容や感想など
最初に書いたとおり、これまでSSHを使ったことがなかったので、事前に用語を調べてから教科書を読んでもわかりませんでした
教科書に書かれている内容をいくら調べてもわからず困っていたところ
「SSHでリモートログインする一連の手順がわからないから理解できないのでは?」
と思い、SSHのインストールからリモートログインまでの一連の手順を調べ直しました
サーバー側の準備
1.サーバーに「openssh-server」をインストールする
2.SSHを起動
3.サーバーを再起動してもSSHが自動で起動するように設定する
4.SSHの起動状況を確認する
5.SSHのセキュリティ設定の変更
(1) 元の設定のバックアップを作成する
(2) viなどのテキストエディタで以下の通り修正
・rootユーザーでのログインの禁止
・パスワードのない(空白)ユーザーの接続を禁止
・パスワードログインの禁止
・公開鍵認証を有効にする
・秘密鍵ファイルの設定
(3) sshe_configの構文チェック
(4) 設定の反映
クライアント側の設定
1.Openssh-clientをインストール
2.鍵ペア(公開鍵と秘密鍵)を作成する
3.生成された公開鍵をサーバーにコピーする
SSH接続の実行
クライアント側で以下のコマンドを実行
$ ssh [サーバーのユーザー名]@[サーバーのホスト名もしくはIPアドレス]
接続が成功すると、サーバーの端末(ターミナル)が表示され、サーバーを遠隔で操作できるようになる
ここまで調べて、教科書の「1.1.3 SSHを使ったリモートログイン」に該当する部分は、クライアント側の設定の最後、「生成された公開鍵をサーバーにコピーする」の部分であることがわかりました
その後、教科書の勉強範囲を読み直したところ、すんなりと理解することができ、
「用語がわかっていても、作業の全体像がわからないと理解できない場合もある」
ということを痛感しました
こういうところで、「実務経験者」と「普段使い」に差が出るんですね