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