【LinuC対策】1.01.1 Linuxのインストール、起動、接続、切断と停止

LinuCの試験対策と例題(学習サイト)についてまとめました。

Linuxの起動

BIOS、UEFIの違いは以下のとおりです。

  • BIOS(Basic Input Output Systemの略)
    • コンピュータのファームウェアインターフェイス。
    • コンピュータ起動時に、BIOSのプログラムが最初に動作し、ハードウェア(CPU、メモリ、SSD等)を制御してオペレーティングシステム(OS)が動作できるようにする。具体的には、コンピュータのマザーボードや拡張カード上に搭載されているフラッシュROMに書き込まれた、周辺機器との間の入出力制御を行う。
    • OS起動前にBIOS設定を変更することで「ハードウェア(CPU、周辺機器)の診断・有効/無効化」「起動デバイスの優先順位変更」、「外部記憶媒体(HDD、SSD等)の設定」「ブートモード(レガシーBIOS/UEIF)の切替え」「日付・時刻の設定」などができる。
  • UEFI(Unified Extensible Firmware Interfaceの略)
    • BIOSよりも後に開発されたコンピュータのファームウェアインターフェイス。
    • BIOSは1980年代から長く使用されており、進化するハードウェア制御に不都合が生じてきたため、それらを解決する様々な仕組みがある。
  • BIOSとUEFIの違い
    • システムドライブのパーティション形式が異なる。
    • BIOSのパーティション形式はMBR(Master Boot Recordの略。起動ドライブがMRBならBIOSブートだとわかる)
    • UEFIのパーティション形式はGPT(起動ドライブがGRTならUEFIブートだとわかる)

レガシーBIOSモード

レガシーBIOSモードでは、起動デバイス(Boot Device)がHDD(ハードディスクドライブ装置)ならMBR領域に書き込まれたプログラムが読み込まれます。
Linux系OSなら「GNU GRUB(GRand Unified Bootloader)」「LILO(LInux LOader)」などのOS起動プログラム(ブート・ローダー)が読み込まれ、OSが起動する。

UEFIモード

UEFIモードは、UEFIファームウェアが使用されます。
初期化と起動に関するすべての情報が.efiファイルに保存され、.efiファイルとOS起動プログラム(ブート・ローダー)がEFIシステムパーティションに保存されます。
EFIシステムパーティションがあるため、UEFIはOSを直接起動でき、OSの高速起動が可能になります。

【Linux】BIOSとUEFIの違い
LinuxにおけるBIOSとUEFIの違いについてまとめました。

Linuxのインストール

Linuxのインストール方法は、「DVDやUSBメモリなどに保存されたLinuxOSをインストールする方法」「インストール専用のメディアからソフトウェアを起動し、ネットワークからLinuxOSをダウンロードしながらインストールする方法」などがあります。
また、Dockerイメージファイルをダウンロードする方法もあります。

Linuxへの接続(ssh)

起動中のLinuxシステム(サーバー側)にリモート接続する場合、SSHを用いるのが一般的です。
SSH接続する場合、セキュリティ対策のため公開鍵と秘密鍵を使って通信を暗号化して接続します。

SSH接続際、接続される側は、sshdが起動されている必要があります。
sshdは、SSHで接続されるのに必要なLinuxシステムの常駐プログラム(デーモン)の1つです。

接続手順

サーバー側でログインするユーザーの鍵ペアを作成するため、そのユーザーでログインし、以下のコマンドを実行してRSAで4096ビットの鍵ペア(秘密鍵、公開鍵)を生成する。

$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):   ← 秘密鍵用のパスワードを入力
Enter same passphrase again:  ← 上記パスワードを再度入力
Your identification has been saved in /user/.ssh/id_rsa.  ← 生成された秘密鍵ファイル(.sshに格納される)
Your public key has been saved in /user/.ssh/id_rsa.pub.  ← 生成された公開鍵ファイル(.sshに格納される)
The key fingerprint is:
SHA256:XXXXXXXXXXXXXXXX user@example.local  ←フィンガープリント
The key's randomart image is:
+---[RSA 4096]----+
|X...  .+*o       |
|oO.  o.+.        |
|.o. + o o.       |
|.E...o *.o       |
|.  ..o*.S o      |
|   . oo* *       |
|    o . +        |
|     ..o *.      |
|       o*.+.     |
+----[SHA256]-----+

サーバー側で、ユーザーのホームディレクトリの配下に.sshのディレクトリ(パーミッションは700)が生成される。
さらに.sshディレクトリ内に公開鍵ファイル(id_rsa.pub)と秘密鍵ファイル(id_rsa)がある。
公開鍵ファイル(id_rsa.pub)はauthorized_keys(鍵チェーン)に登録し、authorized_keysのパーミッションを600に変更する。

$ cd ~/.ssh   ←. sshディレクトリへ移動
$ cat id_rsa.pub >> authorized_keys   ← 公開鍵ファイルをauthorized_keysに登録
$ chmod 600 authorized_keys  ←authorized_keysのパーミッションを600に変更
$ rm -f id_rsa.pub ← 公開鍵ファイルを削除authorized_keysに登録済のため)

秘密鍵ファイル(id_rsa)は、リモートアクセスする端末側に移動させる(USBメモリなどを用いて)。
移動させた後、サーバー側からは秘密鍵ファイル(id_rsa)を削除する。
これで、端末からサーバーのSSH接続(リモートアクセス)を公開鍵認証方式でできる。
以下のコマンドで端末からサーバーに対してSSH接続できることが確認する。

端末がWindowsの場合

「ssh ユーザーID@ホスト名 -i 秘密鍵ファイルのフルパス」でSSH接続できる。
なお、秘密鍵ファイルはログインユーザフォルダのDocuments配下に置く必要がある。

C:¥> ssh user@example.local -i D:¥Keys¥id_rsa

The authenticity of host ‘host1.alpha.local (192.168.1.100)’ can’t be established.
RSA key fingerprint is SHA256:XXXXXXXXXXXXXXXX. ←サーバーのホスト鍵のフィンガープリント
Are you sure you want to continue connecting (yes/no)? ←サーバー接続時、1度だけ表示される。yesを入力すると次回から表示されない。

端末がLinuxの場合

 「ssh -i 秘密鍵ファイルのフルパス ユーザーID@ホスト名 -i 秘密鍵ファイルのフルパス」でSSH接続できる。
なお、秘密鍵のファイル名だけ記述した場合、ユーザーのホームディレクトリ配下の.sshディレクトリから読み込まれる

[user01@host1 ~]$ ssh -i id_rsa user1@example.local
user01@host1.local's password:   ←秘密鍵のパスワードを入力

SSH接続が正常にできることが確認できたら、/etc/ssh/sshd_configを修正し、セキュリティ対策を行う。

$ sudo vi /etc/ssh/sshd_config
・・・
# Authentication:

#LoginGraceTime 2m
PermitRootLogin no    ←noにする(rootのログインを無効化)
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
・・・
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication no    ←noにする(SSH接続のパスワード認証を無効化)

上記のように修正を行い、「/etc/ssh/sshd_config」を保存したら、以下のコマンドでsshdを再起動させて設定を反映させる。

$ sudo service ssh restart

接続先サーバーの確認

sshの接続先サーバーが正しいことを保証する仕組みが「~/.ssh/known_hosts」です。
サーバー側がもつ、正しいサーバーであることをクライアントに対して証明する鍵(秘密鍵、公開鍵)があります。

クライアントがサーバに最初に接続した際、サーバーのホスト公開鍵をクライアントの~/.ssh/known_hostsファイルに保存します。
~/.ssh/known_hostsファイルには、特定のIPアドレス (とホスト名) をもつサーバーのホスト公開鍵が登録されます。
(ホスト秘密鍵はサーバー側だけで保管されており、外部には持ち出されません)

次にクライアントがサーバにに接続するときは、暗号化された通信を介してknown_hostsファイル内に登録されているホスト公開鍵と、サーバーから送信されるホスト公開鍵を照合します。

Linuxの切断

ssh接続を切断するには、「logout」もしくは「exit」コマンドを実行します。
なお、logoutのショートカットキー(Ctrl+Dキー)を使って切断することもできます。

Linuxの停止

システムをシャットダウンするには、「shutdown -h now」または「halt」または「poweroff」を使用します。

shutdownコマンド

shutdown [オプション] 時間 [メッセージ]
オプション 概要
 -h システムをシャットダウン
 -r システムを再起動
 -f ファイルシステムチェック(fsck:file system check)せずに高速起動
 -F 再起動時に強制的にファイルシステムチェック
 -s シングルユーザーモードで再起動
 -k 実際にシャットダウンはせず、警告メッセージをユーザーに通知
 -c 現在実行中のシャットダウン処理をキャンセル
 now 今すぐ実行
 HH:MM HH時MM分に実行(例:shutdown -r 12:00なら12:00に再起動)
+MIN MIN分後に実行

wall

$ wall
システムメンテナンスのため、一時的にシステムを停止します。
Ctrl+D

Ctrl + Dの実行後にメッセージ(システムメンテナンスのため、一時的にシステムを停止します。)が送信される。

シェルスクリプトだと以下のとおり。

# echo -e "システムメンテナンスのためシステムを停止します。" | wall

Linuxの再起動

システムを再起動するには、管理者権限で「reboot」または「shutdown -r now」コマンドを使用します。
(通常、一般ユーザーの権限ではにはシステムの再起動やシャットダウンができません)

shutdownコマンドの実行後はユーザーがログインできなくなります。

【例題1】ssh接続

例題1-1

あるサーバへssh接続した際に、接続先ホストが登録されていない旨のメッセージが表示された。

$ ssh test.example.com
The authenticity of host 'test.example.com (192.168.XXX.XXX)' can't be established.
ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXX/X/XXXXX.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

ここで「yes」と入力した場合、サーバの公開鍵が登録されるファイルで正しいものを1つ選択してください。

~/.ssh/authorized_keys
~/.ssh/known_hosts
~/.ssh/id_rsa
~/.ssh/id_rsa.pub

【解答】

「2. ~/.ssh/known_hosts」が正解。ホスト認証の際、サーバの公開鍵が登録される。

  • 「1. ~/.ssh/authorized_keys」は、公開鍵認証で使用されるファイルのため、誤り。クライアントの公開鍵が接続先サーバの「~/.ssh/authorized_keys」ファイルに登録される。
  • 「~/.ssh/id_rsa」ファイルは、公開鍵認証で使用されるファイルのため、誤り。公開鍵認証で通信を行う際、サーバーとホスト間で一対の公開鍵と秘密鍵のペアを使って認証を行い、ssh-keygenコマンドで秘密鍵のファイル(~/.ssh/id_rsa)が生成される。
  • 「4.~/.ssh/id_rsa.pub」は、公開鍵認証で使用されるファイルのため、誤り。ssh-keygenコマンドで公開鍵のファイル(~/.ssh/id_rsa.pub)が生成される。この公開鍵が、接続先サーバの「~/.ssh/authorized_keys」ファイルに登録される。

例題1-2

【問題】
ssh接続でリモートホスト「server」にログインし、作業を完了し、通信切断したいときに用いるコマンドを以下から2つ選べ。
適切なコマンドはどれか。(2つ選択)

【選択肢】
exit
q
logout
end
quit

【解答】
「exit」と「logout」で、通信切断できる。
なお「Ctrl+D」でも可能。
(制御コードEOF(End Of File: ファイルの終端)が送信され、bashが終了しSSH接続が切断される)

例題1-3

【問題】
ssh-keygenコマンドを実行した時、ユーザのホームディレクトリに作成され、公開鍵と秘密鍵が格納されるディレクトリは次のうちどれか。

【選択肢】
ssh_keys
ssh
.ssh
.key
.keys

【解答】
「.ssh」が正解。

【例題2】shutdownコマンド

【問題1】
AM9:00にシステムを停止(電源オフ)するためのコマンドは次のうちどれか。

①shutdown -r +9
②shutdown -h +9
③shutdown -r 9:00
④shutdown -h 9:00

【解答1】
④が正解。

【問題2】
1分後にシステムを停止(電源オフ)にするコマンドは次のうちどれか。

①shutdown -h
②shutdown -c
③shutdown -r
④shutdown -1

【解答2】
①が正解。電源をオフにする場合は、「-h」オプションを利用します。
また、停止時間を指定しない場合、デフォルト値(1分後)となる。

ssh-keygenコマンド実行時にユーザのホームディレクトリに作成され、公開鍵と秘密鍵が格納されるディレクトリはどれか。
ssh_keys
ssh
.ssh
.key
.keys

ssh-keygenコマンド実行時にユーザのホームディレクトリ(ログインディレクトリ)に「.ssh」というディレクトリが作成され、公開鍵と秘密鍵が格納されます。

関連ページ

【LinuC入門】試験対策と例題まとめ(学習サイト)
LinuCの試験対策と例題(学習サイト)についてまとめました。
【LPIC入門】Linuxの基礎と試験範囲別の解説
LPICに従って、Linuxの基礎と試験範囲別の解説についてまとめました。

コメント