sshd_config
sshd_config | 設定項目 |
---|---|
Port | SSHで使うポート番号、基本22 |
Protocol | バージョン、今は2系 |
ListenAddress | 接続を受け付けるアドレス |
HostKey | ホスト鍵ファイルのパス |
syslogFacility | ログのファシリティ |
LogLevel | ログのプライオリティ |
LoginGraceTime | ログインを試みることのできる接続時間 |
PermitRootLogin | rootログインの許可/禁止 |
StrictModes | パーミッションを厳密にチェックするかどうか |
MaxAuthTries | 認証を試みることのできる最大回数 |
PubkeyAuthentication | 公開鍵認証を許可するかどうか |
AuthorizedKeysFile | 公開鍵を登録するファイル |
PasswordAuthentication | パスワード認証の有効/無効 |
PermitEmptyPasswords | 空パスワードの有効/無効 |
UsePAM | PAMを使用する |
X11Forwarding | X11フォワーディングの有効/無効 |
AllowUsers | ログインを許可するユーザー |
DenyUsers | ログインを拒否するユーザー |
AllowGroups | ログインを許可するグループ |
DenyGroups | ログインを拒否するグループ |
Subsystem | 外部システムを指定 |
IgnoreRhosts | 認証を行わずに無条件にログインできるホスト・ユーザを設定可能にする |
Match | Group:特定グループのSSH接続設定 Host:特定の接続元IPアドレスのSSH接続設定 LocalAddress:特的のLISTENするIPアドレスのSSH接続設定 LocalPort:特定の接続先ポート番号のSSH接続設定 |
ホスト認証とユーザー認証
ホスト認証
- 公開鍵暗号方式を用いて、ホストの正当性を確認する
- 公開鍵暗号方式では、公開鍵と秘密鍵のペアを使って認証を行います
- OpenSSHをインストールすると、ローカルホスト用の公開鍵と秘密鍵が作成されます
- 秘密鍵は外部に漏れないように管理してください。(アクセス権は、所有者であるrootのみ読み書き可能となっています。)
- ホストの公開鍵と秘密鍵はユニークなものです
- SSHでの接続ごとに、ホストの公開鍵(ホスト鍵)がクライアントへ送信されます
- クライアントは、所属しているホスト鍵と一致するかどうかを確認することで、ホストに正当性を確認でできます
- ホスト鍵は**~/.ssh/known_hosts** に格納されます。
- 初回接続時には、~/.ssh/known_hosts にはホスト鍵が登録されていないため、登録するメッセージが表示され、ホスト鍵が登録されます
- 次回以降は、接続先ホストから送られてきたホスト鍵を known_hosts内の鍵と比較し、問題がなければ、ユーザー認証に進みます
公開鍵認証
- ホスト認証を終えると、次にユーザー認証に進みます
- ユーザー認証はまず公開鍵認証が試されます
- 公開鍵認証は、一組の公開鍵と秘密鍵を使います
- 公開鍵で暗号化したデータは、ペアとなる秘密鍵でのみ復号できます
- 秘密鍵となる電子署名は、ペアとなる公開鍵で検証できます
公開鍵と秘密鍵のペアを ssh-keygen で作成します。
# ssh-keygen -t rsa
次に、ユーザーの公開鍵ファイルを接続先ホストの ~/.ssh/authorized_keygen に登録します。
鍵ファイルはあらかじめ、scp などで転送しておきます。(ssh-copy-id を使うと、簡単に公開鍵を接続先ホストに登録できます。)
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
SSHで接続します。
$ ssh testuser@server.naata.com
セキュリテイ
パスワード認証の禁止
PasswordAuthentication no
rootログインの禁止
PermitRootLogin no
ログインユーザーの制限
※指定しなかったユーザーは全て禁止となります。
AllowUsers testuser
無条件にログインできるホスト・ユーザの禁止
IgnoreRhosts no
ポートフォワーディング
オプション | 説明 |
---|---|
-L | ローカルからリモートへポート転送する |
-R | リモートからローカルへポート転送する |
-N | コマンドを実行せず、ポート転送のみ行う |
-f | sshをバックグランドとして実行する |
-g | ポート転送するとき、ローカルホスト以外からも転送元ポートを利用できるようにする |
sshポートフォワーディング
SSHポートフォワーディングを知った話
設定例
- サーバー server.naata.com(192.168.250.100) user01
- クライアント client.naata.com(192.168.250.200) user02
sshd.config
Port 22
ListenAddress 0.0.0.0
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_key_rsa_key
HostKey /etc/ssh/ssh_host_key_dsa_key
SyslogFacility AUTHPRIV
LogLevel INFO
LoginGraceTime 2m
PermitRootLogin no
StricModes yes
MaxAuthTries 6
#公開鍵認証
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
#パスワード認証
PasswordAuthentication yes
PermitEmptyPasswords no
UsePAM yes
X11Forwarding yes
パスワード認証でログインしてみる。
なお、空パスワードでの認証は no なので、パスワードは必須である。
host名でアクセスを設定する 場合も参照。
$ ssh user01@192.168.250.100
もしくは
$ ssh user01@server.naata.com
公開鍵認証をやってみる。
まず、クライアント側で公開鍵と秘密鍵を作成します。
$ ssh-keygen -t rsa
公開鍵をサーバー側へコピーする。
$ ssh-copy-id -i .ssh/id_rsa.pub user01@server.naata.com
秘密鍵を使って、ログインをしてみる。
$ ssh -i id_rsa nginx-usero1@server.naata.com
また、.ssh/config 使って簡単に接続できるようになるので、↓の記事も参考になります。
~/.ssh/configについて