[CentOS7] sudo、公開鍵によるSSH接続設定

2018/07/15

CentOSインストール直後、セキュリティのために最低限行ったほうがいい作業です。

環境

CentOS7.4

パッケージ更新

$ yum -y update

管理者ユーザ追加

ユーザ作成する際のデフォルト値

$ useradd -D

ユーザ追加 (-mは、ホームディレクトリ作成、sudo用にwheelグループに追加しておきます)

useradd -m -U -G wheel ユーザ名 

パスワード設定

passwd ユーザ名

sudo 設定

  1. visudo起動
$ visudo 
  1. wheelグループに対して許可

    Allows people in group # wheel to run all commands

    %wheel ALL=(ALL) ALL

    wheel to run all commands
    %wheel ALL=(ALL) ALL

  2. (任意) sudo 実行時のパスワード無し ※ 公開サーバではやらないほうが良い

# %wheel        ALL=(ALL)       NOPASSWD: ALL
%ユーザ名       ALL=(ALL)       NOPASSWD: ALL

※ この作業以降は、rootではなく作成したユーザーで作業。

SSH 公開鍵による接続

※ 前もって公開鍵・秘密鍵を作成しておくこと。

公開鍵:id_rsa.pub
秘密鍵:pri_id_rsa 1. ユーザのホームディレクトリに公開鍵を保存

$ su - ユーザー名
$ cd ~              ← ユーザのホームディレクトへ移動
$ mkdir .ssh        ← 公開鍵を保存するディレクトリ作成
$ chmod 700 .ssh
$ vi .ssh/authorized_keys
※ エディタ内に、作成済みの公開鍵を張り付けて保存。
$ chmod 600 .ssh/authorized_keys

  1. SSHサーバの設定 ※ 設定に失敗すると外部からつながらなくなるので、念のためターミナルは2つ接続しておくといいですよ。

    $ sudo vi /etc/ssh/sshd_config

    Port xxxx ← 22から変更
    PermitRootLogin no ← rootでのログイン禁止
    PasswordAuthentication no ← パスワードでのログイン禁止

sshdを再起動

sudo systemctl restart sshd

firewall設定 2122許可と 22の削除

firewall-cmd --add-port=2122/tcp --zone=public --permanent
firewall-cmd --remove-port=2122/tcp --zone=public --permanent
firewall-cmd --reload