目次
- 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ファイルの主な設定項目です。
設定項目 | 説明 |
Port | SSHで使うポート番号(デフォルトは22) |
Protocol | SSHのバージョン |
HostKey | ホストの秘密鍵ファイル |
PermitRootLogin | rootでもログインを許可するかどうか |
PubkeyAuthentication | SSHでの公開鍵認証を使用するかどうか |
AuthorizedKeyFile | 公開鍵が格納されるファイル名 |
PermitEmptyPasswords | からのパスワードを許可するかどうか |
PasswordAuthentication | パスワード印象を許可するかどうか |
X11Forwarding | X11転送を許可するかどうか |
SSHを使ってリモートホストにログインするには、sshコマンドを使います。
引数にはホスト名かIPアドレスを指定します。
オプション | 説明 |
-p ポート番号 | ポート番号を指定する。 |
-l ユーザー名 | 接続するユーザーを指定する。 |
-i ファイル名 | 秘密鍵ファイルを指定する。 |
ホスト認証
SSHでは、ユーザー名とパスワードによるユーザー認証に先立って、クライアントがサーバの正当性を確認するホスト認証が行われます。
SSHで接続するたびにサーバ固有のホスト認証がサーバからクライアントに送られ、クライアント側で保存されているサーバの公開鍵と比較して、一致するかどうかを確認します。
公開鍵認証
ユーザー認証には、パスワード認証以外に、公開鍵認証を利用することが出来ます。
公開鍵認証では、通信を行うホスト間で、一対の公開鍵と秘密鍵のペアを使って認証を行います。
公開鍵認証を行うには、あらかじめクライアント側ユーザーの公開鍵をサーバに登録しておく必要があります。
ssh-keygenコマンド
公開鍵と秘密鍵の鍵ペアを作成するには、ssh-keygenコマンドを使います。
暗号方式 | 鍵 | SSHクライアント | SShサーバ |
rsa | 秘密鍵 | id_rsa | ssh_host_rsa_key |
rsa | 公開鍵 | id_rsa.pub | ssh_host_rsa_key.pub |
dsa | 秘密鍵 | id_dsa | ssh_host_dsa_key |
dsa | 公開鍵 | id_dsa.pub | ssh_host_dsa_key.pub |
ecdsa | 秘密鍵 | id_ecdsa | ssh_host_ecdsa_key |
ecdsa | 公開鍵 | id_ecdsa.pub | ssh_host_ecdsa_key.pub |
ed25519 | 秘密鍵 | id_ec25519 | ssh_host_ec25519_key |
ed25519 | 公開鍵 | id_ed25519.pub | ssh_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ポート転送といいます。
最後まで読んで頂き、ありがとうございました。
他の分野へ移動できる全体ページへは下記リンクから移動できます。