最近のクラウドサーバーはSSHのコンソールが管理画面にあったりするのでよいですね。SSH接続できなくなったからといってデータセンターに行くことももうないです。
SSHの設定の切り分けのためにサーバーにデフォルトで設定してあるファイヤーウォールなどは予めすべて切りにしておきましょう。セキュリティ・ポリシーはその後丁寧に設定しましょう。
で、最初にこれらは全部切りにしておく。
vi /etc/selinux/config
SELINUX=disabled
(*1)サーバー再起動必要
systemctl stop iptables
systemctl stop firewall.service
all:all
(*1)サーバー再起動不要
かならず別のルートで設定できるようにしましょう。端末から2つSSH接続していれば、片方がログインしている限り一応セッションは続きます。
設定ポリシーは、
cd /etc/ssh/
cp -p sshd_config sshd_config.org
vi sshd_config
設定はこれだけ。
Port 3949
ListenAddress 0.0.0.0
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
PermitRootLogin yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp /usr/libexec/openssh/sftp-server
UsePAMはnoにしたい。たぶんした方がいい。でもできない。
再起動
systemctl restart sshd
ICP/IP層なので、結構下層で制限かけてくれるので安心です。
# etc/hosts.allow
sshd: 123.456.789.000
# etc/hosts.allow
All:All
再起動しなくても保存した途端に有効です。