CentOS7を新規インストール後に行ったsshd設定のメモです。
クライアント公開鍵の登録
予め、ssh-gen 等でクライアント公開鍵を作成しておきます。
$ 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の設定を変更します。
# yum install -y policycoreutils-python
# semanage port -a -t ssh_port_t -p tcp 12322
sshdの設定変更
sshdのポート番号、rootでのログイン無効化、パスワード認証の無効化を変更します。
# vi /etc/ssh/sshd_config
…略…
# ポート番号
Port 12322
# rootでのSSHログインの可否:yes ログイン可、no ログイン不可
PermitRootLogin no
# パスワード認証の可否:yes パスワード認証可、no パスワード認証不可
PasswordAuthentication no
…略…
SSHを再起動します。
# 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 *:*
ファイアウォールの設定変更
ファイアウォールの設定を変更して、変更したポート番号を開けます。
# 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 を再起動します。
# 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接続します。接続できれば完了です。