IT

OpenSSH【LPIC level1】

目次

  • OpenSSH
  • SSHのインストールと設定
  • ホスト認証
  • 公開鍵認証(ssh-keygenコマンド)
  • SSHの活用(scpコマンドによるリモートファイルコピー、ssh-agent、ポート転送)

OpenSSH

SSHとは、リモートホスト間の通信において高いセキュリティを実現するものです。

強力な認証機能と暗号化により、ファイル転送やリモート操作を安全に行うことが出来ます。

Linuxでは、OpenSSHが一般的に利用されています。

SSHのインストールと設定

SSHのインストール

OpenSSHをインストールすると、ホストの公開鍵と秘密鍵が作成されます。

これらのファイルはホスト認証に使われます。

SSHの設定

SSHサーバの機能は、sshdデーモンが提供します。

sshdの設定ファイルは/etc/ssh/sshd_configです。

以下、/etc/ssh/sshd_configファイルの主な設定項目です。

設定項目説明
PortSSHで使うポート番号(デフォルトは22)
ProtocolSSHのバージョン
HostKeyホストの秘密鍵ファイル
PermitRootLoginrootでもログインを許可するかどうか
PubkeyAuthenticationSSHでの公開鍵認証を使用するかどうか
AuthorizedKeyFile公開鍵が格納されるファイル名
PermitEmptyPasswordsからのパスワードを許可するかどうか
PasswordAuthenticationパスワード印象を許可するかどうか
X11ForwardingX11転送を許可するかどうか

SSHを使ってリモートホストにログインするには、sshコマンドを使います。

引数にはホスト名かIPアドレスを指定します。

オプション説明
-p ポート番号ポート番号を指定する。
-l ユーザー名接続するユーザーを指定する。
-i ファイル名秘密鍵ファイルを指定する。

ホスト認証

SSHでは、ユーザー名とパスワードによるユーザー認証に先立って、クライアントがサーバの正当性を確認するホスト認証が行われます。

SSHで接続するたびにサーバ固有のホスト認証がサーバからクライアントに送られ、クライアント側で保存されているサーバの公開鍵と比較して、一致するかどうかを確認します。

公開鍵認証

ユーザー認証には、パスワード認証以外に、公開鍵認証を利用することが出来ます。

公開鍵認証では、通信を行うホスト間で、一対の公開鍵と秘密鍵のペアを使って認証を行います。

公開鍵認証を行うには、あらかじめクライアント側ユーザーの公開鍵をサーバに登録しておく必要があります。

ssh-keygenコマンド

公開鍵と秘密鍵の鍵ペアを作成するには、ssh-keygenコマンドを使います。

暗号方式SSHクライアントSShサーバ
rsa秘密鍵id_rsassh_host_rsa_key
rsa公開鍵id_rsa.pubssh_host_rsa_key.pub
dsa秘密鍵id_dsassh_host_dsa_key
dsa公開鍵id_dsa.pubssh_host_dsa_key.pub
ecdsa秘密鍵id_ecdsassh_host_ecdsa_key
ecdsa公開鍵id_ecdsa.pubssh_host_ecdsa_key.pub
ed25519秘密鍵id_ec25519ssh_host_ec25519_key
ed25519公開鍵id_ed25519.pubssh_host_ed25519_key.pub

SSHの活用

scpコマンドによるリモートファイルコピー

scpコマンドとは、SSHの仕組みを使い、ホスト間で安全にファイルをコピーするコマンドです。

オプション説明
-pパーミッションなどを保持したままコピーする。
-rディレクトリ内を再帰的にコピーする。
-R ポート番号ポート番号を指定する。

ssh-agent

秘密鍵ファイルを使用する際は、パスフレーズを尋ねられます。

パスフレーズを入力する手間を省くには、ssh-agentを利用します。

ssh-agentはクライアント側で稼働するデーモンであり、秘密鍵をメモリ上に保持しておき、必要となった時点でそれを利用するため、その都度パスフレーズを入力する必要がありません。

ssh-agentを利用するには、ssh-agentの子プロセスとしてbashシェルを起動します。

次に、ssh-addコマンドを使って秘密鍵を登録します。

ポート転送

SSHポート転送(ポートフォワーディング)とは、あるポートに送られてきたTCPパケットを、SSHを使った安全な通信路を経由して、リモートホストの任意のポートに転送することです。

この機能を使うと暗号化されていないプロトコルを使った通信の安全性を高めることが出来ます。

ポート転送の仕組みを使って、リモートホストのXクライアントをローカルホストで動作させることをX11ポート転送といいます。

最後まで読んで頂き、ありがとうございました。

他の分野へ移動できる全体ページへは下記リンクから移動できます。