【Ubuntu Server 18.04】初期セットアップ
Ubuntu Server 18.04をセットアップする時の最低限のセットアップとか。
主に作業用ユーザ作成から、SSHポートの変更、公開鍵の設定まで。
- 前提
- 作業用ユーザ登録&sudoグループ追加
- 鍵作成
- 鍵の移動
- 鍵のパーミッションを変更
- SSHのポート変更とルートログインの禁止
- ファイアウォール設定
- クライアント側でSSHの設定をしておく
- SSHによるパスワード認証をやめる
- クライアント側の公開鍵を削除
- 余談
前提
Ubuntu Server 18.04を想定。
インストールは完了したばかりの状態で、SSHもしくは実機でrootログインできる状態。
今回の手順ではポート22のパスワード認証でのSSH接続している想定。なので、ちゃっちゃと設定して終わりにしたほうが良い。
公開鍵などの作成、公開鍵でのSSH接続する端末はMacを想定🍎
サーバの名前はhogeserver
とする。
サーバでの作業ユーザはhogeuser
とする。
作業用ユーザ登録&sudoグループ追加
ここからはサーバ側での操作。
rootでの作業をなくすため作業用ユーザをadduser
で作成して、gpasswd
でsudoグループに追加する1。
# adduser hogeuser # gpasswd -a hogeuser sudo
以降はサーバにrootでログインせずに、作業ユーザでログインする。
鍵作成
クライアントでの操作。
下記コマンドで鍵を生成。
$ ssh-keygen -t ed25519
作成される場所とパスフレーズを問われるので入力。
ちなみに、今回は暗号のタイプ(アルゴリズム)をEd25519で指定。強固でパフォーマンスが良いらしいので使うことに。
また、RSA方式の鍵を作るときと違って、ビット数を指定しなくて良いのもポイント。
注意点として、こちらのEd25519はOpenSSH 6.5から使える。心配な場合は、ssh -V
でOpenSSHのverを要確認。
鍵の移動
鍵の移動をする。
サーバの作業。
まずはサーバ側でディレクトリを作っとく。作業ユーザでログインして、.ssh
ディレクトリを作成。
$ mkdir ~/.ssh
クライアント(Mac)での作業。
scp
を使って鍵をサーバに送り込む。
コマンドの書式は、scp -P <ポート番号> <鍵のパス> <作業ユーザ名>@<サーバ名>:<サーバ側の鍵の設置パス>
。
例としては下記のようなコマンドになる。
$ scp -P 22 ~/.ssh/id_ed25519.pub hogeuser@hogeserver:~/.ssh/authorized_keys
鍵のパーミッションを変更
クライアント側。
$ chmod 700 ~/.ssh
サーバ側。
$ chmod 600 ~/.ssh/authorized_keys
SSHのポート変更とルートログインの禁止
サーバ側で作業。
/etc/ssh/sshd_config
ファイルを編集する。
編集の前にコピーしてバックアップしとく。
# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_org
viを起動。
# vi /etc/ssh/sshd_config
編集する部分は下記の通り。
設定するポートとしては、予約されているポート番号ではない動的(ダイナミック)ポート番号である49152〜65535あたりから選出する2。
編集箇所はこんな感じ。
#Port 22 ↓ Port <任意のポート番号>
PermitRootLogin yes ↓ PermitRootLogin no
ファイアウォール設定
Ubuntuのファイアウォール設定として、ufw
を使ってSSHに設定したポート番号を設定しておく。
# ufw allow <設定したsshのポート番号> # sudo ufw enable
設定後、ufw status verbose
で設定したポートがルールに追加されていることや、incomingルールがdeny
になっていることを確認(デフォルトはdeny
だけど念の為)。
$ sudo ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- <設定したポート番号> ALLOW IN Anywhere <設定したポート番号> (v6) ALLOW IN Anywhere (v6)
ここで一旦SSHサービスを再起動してログアウト。
$ sudo service ssh restart $ exit
クライアント側でSSHの設定をしておく
サーバはともかく、クライアント(Mac)から複数のサーバにSSHすることだと思う。
それ以外にも、ssh <ユーザ名>@<サーバ名>
といったコマンドを書くのもめんどくさいので、~/.ssh/config
にサーバの設定を書き込む。
$ vi ~/.ssh/config
書き込む内容はこんな感じ。
$cat ~/.ssh/config # hogeserver Host hogeserver HostName xxx.xxx.xxx.xxx User hogeuser Port xxxxxxx IdentityFile ~/.ssh/id_ed25519
以降、こんな感じで接続できる。
ポート、ユーザ、鍵の指定が省略できる。
$ ssh hogehogeserver
SSHによるパスワード認証をやめる
クライアントからサーバに鍵認証でログインし、鍵認証できることを確認する。
鍵認証できたらパスワード認証 はもうしないので、パスワード認証を付加に設定する。
サーバ側の/etc/sshd_config
を編集する。
$ sudo vi /etc/ssh/sshd_config
編集後はこんな感じ。
PasswordAuthentication yes ↓ PasswordAuthentication no
SSHを再起動。
$ sudo service sshd restart
一旦サーバからログアウトし、クライアントからパスワードによる認証ができないこと、鍵認証ができることを確認。
クライアント側の公開鍵を削除
クライアント側での作業。
不要になった公開鍵を削除。
$ rm ~/.ssh/id_ed25519.pub
おわり🌱
余談
ここらへんの作業フロー用に手順を探してみると、Ubuntu 16.04の情報だったり、鍵がRSAだったりしたので個人的なカンペとして書いてみた。
この手順のあと、必要に応じてログとかアラートとか、バックアップを設定するのだろうけどひとまずここまで。
これから始める人の Linux超入門 (日経BPパソコンベストムック)
- 作者: 日経Linux
- 出版社/メーカー: 日経BP社
- 発売日: 2018/07/02
- メディア: ムック
- この商品を含むブログを見る
-
gpasswd
じゃなくてusermod
の場合はusermod -aG sudo hogeuser
。 ↩