CentOS7 の sshd設定


CentOS7を新規インストール後に行ったsshd設定のメモです。


# クライアント公開鍵の登録

予め、ssh-gen 等でクライアント公開鍵を作成しておきます。

```bash
$ cd ~
$ mkdir .ssh
$ chmod 700 .ssh/
$ cd .ssh/
$ vi authorized_keys
… 略 …
$ chmod 600 authorized_keys
```

.ssh ディレクトリ、authorized_keys ファイルのパーミッションを正しく設定しないと、sshd再起動でエラーになります。


# sshdの再起動

```:bash
# systemctl restart sshd
# systemctl status sshd
● sshd.service - OpenSSH server daemon -l
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2016-06-30 23:57:30 JST; 12s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 2703 (sshd)
   CGroup: /system.slice/sshd.service
           └─2703 /usr/sbin/sshd -D

Jun 30 23:57:30 xxx systemd[1]: Started OpenSSH server daemon.
Jun 30 23:57:30 xxx systemd[1]: Starting OpenSSH server daemon.
Jun 30 23:57:30 xxx sshd[2703]: Server listening on 0.0.0.0 port 22.
Jun 30 23:57:30 xxx sshd[2703]: Server listening on :: port 22.
```

クライアントから鍵認証でSSH接続して確認します。

これで基本的な鍵認証の設定は終わりです。
あとはポートの変更とかパスワード認証の無効化とかを行います。


# SELinuxの設定変更

sshdのポート番号を変更するとそのままではエラーでsshdが起動しないので、SELinuxの設定を変更します。

```shell-session
# yum install -y policycoreutils-python
# semanage port -a -t ssh_port_t -p tcp 12322
```

# sshdの設定変更

sshdのポート番号、rootでのログイン無効化、パスワード認証の無効化を変更します。

```bash
# vi /etc/ssh/sshd_config

…略…
# ポート番号
Port 12322
# rootでのSSHログインの可否：yes ログイン可、no ログイン不可
PermitRootLogin no
# パスワード認証の可否：yes パスワード認証可、no パスワード認証不可
PasswordAuthentication no
…略…

```

SSHを再起動します。

```bash
# systemctl restart sshd
# systemctl status sshd -l
● sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2016-07-01 00:27:38 JST; 27s ago
     Docs: man:sshd(8)
           man:sshd_config(5)
 Main PID: 16527 (sshd)
   CGroup: /system.slice/sshd.service
           └─16527 /usr/sbin/sshd -D

Jul 01 00:27:38 xxx systemd[1]: Started OpenSSH server daemon.
Jul 01 00:27:38 xxx systemd[1]: Starting OpenSSH server daemon...
Jul 01 00:27:39 xxx sshd[16527]: Server listening on 0.0.0.0 port 12322.
Jul 01 00:27:39 xxx sshd[16527]: Server listening on :: port 12322.
# ss -natu
Netid State      Recv-Q Send-Q            Local Address:Port                           Peer Address:Port
tcp   LISTEN     0      128                           *:12322                                     *:*                  
```

# ファイアウォールの設定変更

ファイアウォールの設定を変更して、変更したポート番号を開けます。

```bash
# vi /etc/firewalld/services/ssh.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="12322"/>
</service>
```

設定を変更したら、firewalld を再起動します。

```bash
# systemctl restart firewalld
# systemctl status firewalld -l
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2016-07-01 00:31:46 JST; 35s ago
 Main PID: 16634 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─16634 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Jul 01 00:31:45 xxx systemd[1]: Starting firewalld - dynamic firewall daemon...
Jul 01 00:31:46 xxx systemd[1]: Started firewalld - dynamic firewall daemon.
```

クライアントから鍵認証でSSH接続します。接続できれば完了です。


# 参考

- [CentOS 7 のインストールと SSH 接続 (さくらのVPS)](http://qiita.com/100/items/dd13912f1cf5ea14d42a)
- [CentOS7のfirewalldでsshのポート番号を変更する方法](http://qiita.com/DQNEO/items/5780d81b2e0af4cc1544)
- [SSHサーバの設定(ポート番号変更、rootのログイン禁止、パスワード認証禁止)](http://www.adminweb.jp/web-service/ssh/index8.html)