Ubuntu 20.04の初期設定

owner203はUbuntu信者です。2019年1月ごろに、Ubuntu 18.04のサーバー作成後の初期設定に関する記事を公開しましたが、時はすでに2021年、Ubuntu 20.04もかなり普及してきたと思いますので、今度はUbuntu 20.04のサーバーをConoHaで作成後の初期設定の流れを整理しました。

IPv6の有効化

ConoHaはIPv6をサポートしています。しかし、ConoHaのUbuntu 20.04ディスクイメージでデプロイした場合はデフォルトでIPv6が無効化されています。なので、rootユーザーで初回ログインしたら、まずIPv6を有効にします。Ubuntu 20.04ではifupdownを使っていないので、ネットワークの設定は「/etc/network」ではなく、代わりに「/etc/netplan」でやります。

vi /etc/netplan/10-gmovps.yaml
/etc/netplan/10-gmovps.yaml

network:
    ethernets:
        eth0:
            addresses: []
            dhcp4: true
            dhcp6: false
            --accept-ra: false
            ++accept-ra: true
            optional: true
    version: 2

そして変更を適用します

netplan apply

Host名設定

ホスト名を設定します。

vi /etc/hostname
/etc/hostname

--XXX-XXX-XXX-XXX
++myhostname

編集した内容はサーバー再起動後に反映されますので、ここで一回再起動します。

reboot

ユーザー追加

次にrootではない一般ユーザーを作成して、sudo権限を付与します。

adduser username
gpasswd -a username sudo

rootユーザーをログアウトして、一般ユーザーをSSHでログインします。

sudoに関する設定

sudoを打つたびにパスワードが聞かれるのは面倒くさいので、パスワードなしでsudoを打てるようにします。

sudo visudo
/etc/sudoers.tmp

# Allow members of group sudo to execute any command
--%sudo   ALL=(ALL:ALL) ALL
++%sudo   ALL=(ALL:ALL) NOPASSWD:ALL

SSHに関する設定

これからSSHセキュリティに関する諸設定をやります。オリジナルの設定ファイルをバックアップしてから編集します。まず、デフォルトのポート番号を変更して、rootでの接続を禁止にします。

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
sudo vi /etc/ssh/sshd_config
/etc/ssh/sshd_config

Port 12345 #コメントマークを外してポートを変えます

--PermitRootLogin yes
++PermitRootLogin no
sudo service ssh restart

ufwを有効にして、使うポート番号を開き、limitにします。

sudo ufw enable
sudo ufw limit 12345/tcp

通常SSHはパスワード認証ではなく、鍵認証が望ましいので、サーバーで鍵ペアを作成します。

username@server

ssh-keygen -t ed25519 -C ""
mv ~/.ssh/id_ed25519.pub ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys  #権限設定間違えると怒られる

作成された秘密鍵をscpなどでクライアントに保存します。

@client

mkdir ~/.ssh
chmod 700 ~/.ssh
scp -P 12345 username@server_ip:/home/username/.ssh/id_ed25519 ~/.ssh/mykeyname

そしたらもう一度設定ファイルを編集して、SSHのパスワード認証を禁止にします。

username@server

sudo vi /etc/ssh/sshd_config
/etc/ssh/sshd_config

--PasswordAuthentication yes
++PasswordAuthentication no

最後にsshdを再起動して、設定を適用します。

sudo service ssh restart

クライアントからサーバーにSSH接続してみて、パスワードが要求されなければOKです。

ssh -p 12345 -i ~/.ssh/mykeyname username@server_ip_or_domain

SSHクライアント側の追加設定

SSH接続するたびにポート番号、そしてIPアドレスまたはドメインを入力するのは大変なので、クライアントの.sshフォルダに設定を記憶するconfigファイルを置くと毎回IPアドレスやドメイン名を入力することなく楽です。

~/.ssh/config

Host myhostname
     Hostname server_ip_or_domain
     AddressFamily inet
     Port 12345
     User username
     IdentityFile ~/.ssh/mykeyname

接続してみます。

ssh myhostname