LoginSignup
0
0

More than 1 year has passed since last update.

Linux SSHとそれぞれの認証方法について(自分用メモ

Posted at

SSH(Secure SHell)とは、暗号化を用いたリモートホストの遠隔操作用のプロトコル。
ネットワーク経由で他のコンピュータに接続して操作する場合に使用。
SSHでは通信内容が暗号化されますが、同じ遠隔操作用のプロトコルであるTELNETでは通信内容が暗号化されないためパスワードや情報を盗み見られる可能性があるので、SSHでのリモート接続の方がより安全。

クライアントがSSHでサーバへログインする際、ホスト認証とユーザ認証が行われます。

・ホスト認証
ホスト認証は、SSHクライアントが接続先のリモートホスト(SSHサーバ)が正しいホストかどうかを確認する(なりすましを防ぐ)ために行います。
クライアントからの接続時に、リモートホストは自身の公開鍵をSSHクライアントに送信します。SSHクライアントは受け取った公開鍵と、SSHクライアントの「~/.ssh/known_hosts」ファイルに格納されているSSHサーバの公開鍵を比べることで正しいホストかどうかを確認します。(「~」はそのユーザのホームディレクトリを示します。)

初めて接続する際はSSHクライアントの「~/.ssh/known_hosts」ファイルにSSHサーバの公開鍵が格納されていないため、サーバの公開鍵を登録するかどうか問われます。「yes」と入力すると「~/.ssh/known_hosts」に登録されます。2回目以降は問われません

SSHサーバの公開鍵と秘密鍵はOpenSSHをインストールする際「/etc/ssh」ディレクトリ配下に作成され、「known_hosts」ファイルにはホスト名・IPアドレス、鍵の種類、ホストの公開鍵が格納されます

・ユーザ認証
ユーザ認証は、SSHクライアントで接続してくるユーザが正当なユーザかどうかを確認するために行います。
ユーザ認証にはパスワード方式と公開鍵方式の2種類。

パスワード方式...ローカルでのログインと同様に、接続ユーザのID/パスワードで認証する
公開鍵方式...公開鍵と秘密鍵の組み合わせで認証する。パスワードを使用せず、鍵を持つ者がログインできる

公開鍵方式を使用する場合は、ユーザごとに一対の公開鍵と秘密鍵を作成して、公開鍵の方をSSHサーバの「~/.ssh/authorized_keys」に登録しておきます。サーバはSSH接続を受け付けた際、登録されている公開鍵とユーザの秘密鍵のペアが一致するかどうかを確認します。一致しなければログインさせません。これによりパスワード方式よりもセキュリティ上強固なユーザ認証を実現します。

【SSHの設定】
ここでは、CentOS 7 + OpenSSH(SSHのソフトウェア)で構成したSSHサーバへ、公開鍵方式で接続する例

CentOS 7には標準でOpenSSHがインストールされています。
OpenSSHのデフォルトのユーザ認証はパスワード方式です。

  1. sshdサービスの起動
    接続先のSSHサーバ上で、SSHのサーバプログラムであるsshdサービスを起動しておきます。

systemctl start sshd

  1. 鍵ペアの作成
    SSH接続するユーザごとに「ssh-keygen」コマンドを使用して公開鍵と秘密鍵のペアを作成します。

書式:
 ssh-keygen [-t 鍵の種類]
※-tオプションを省略した場合はRSAの鍵ペアが作成されます。

SSHクライアント/SSHサーバのいずれかで作成できますが、ここではSSHクライアント上で作成します。
ssh-keygenコマンド実行時にユーザのホームディレクトリ(ログインディレクトリ)に「.ssh」というディレクトリが作成され、公開鍵と秘密鍵が格納されます。

  1. 鍵の配置
    ユーザの公開鍵「id_rsa.pub」はサーバ上に、ユーザの秘密鍵「id_rsa」はクライアント上に配置します。
    ここではクライアント上で作成した公開鍵「id_rsa.pub」をサーバにコピーします。鍵ファイルはUSBメモリに保存して運んだり、scpコマンド(SSHを使用したファイル転送)で安全に転送します。

転送したユーザの公開鍵は、サーバの認証鍵リスト「authorized_keys」ファイルに登録しておきます。

  1. SSHサーバの設定の変更
    SSHサーバの設定ファイル「/etc/ssh/sshd_config」の次の設定項目を変更します。

PasswordAuthentication no  ← パスワード認証を無効にする
PermitRootLogin no      ← rootユーザ(システム管理者)でのログインを禁止する

変更を反映するために、sshdサービスに設定ファイルを再読み込みさせます。

systemctl reload sshd

  1. SSH接続
    sshコマンドでクライアントからサーバに接続します。ログイン後はリモートホストでの操作が可能。

書式:
 ssh [オプション] [SSH接続ユーザ名@]SSHサーバアドレス
※「SSH接続ユーザ名@」を省略した場合は、実行しているユーザ名をSSH接続ユーザ名として接続

  1. SSH接続の切断
    SSHサーバからログアウトするにはexitコマンドかlogoutコマンドで切断。また、Ctrl+D(CtrlキーとDを同時に押す)で制御コードEOF(End Of File: ファイルの終端を示す)を送信することによっても、bashが終了しSSH接続が切断。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0