はじめに
現在課題でmultipassを使用しています。
新たにVM(バーチャルモジュール)を作成した際に、ssh接続できないことがありました。
そのため、毎回接続が成功するようポイントと共にまとめていきます。
構築環境
・macOS Sonoma 15.1(Apple M1チップ)
・Ubuntu 22.04(Multipass上で構築)
手順
Multipass VM を作成(ローカル)
multipass launch --name wp-server --cpus 2 --memory 4G --disk 16G
VMに入れるubuntuのバージョンを指定したい時は、末尾に追加
ex)Ubuntu 20.04
multipass launch --name zabbix-server --cpus 2 --memory 4G --disk 10G 20.04
% multipass list
# 以下が表示される
wp-server Running 192.168.64.55 Ubuntu 24.04 LTS
作成したVMのIPアドレスをコピーしておきましょう
Multipass VM に入る
multipass shell wp-server
ユーザー作成(VM)
$ sudo useradd menta
仮想マシン wp-server の中で menta というローカルユーザーを作成します。
作成したユーザーの使用例
- Ansible で SSH 接続時に使う管理ユーザーとして
menta
を利用したいとき - 複数のユーザーを切り分けて管理したいとき(例:
ubuntu
はデフォルト、menta
はWordPress管理者用など)
$ sudo grep menta /etc/passwd
#結果
menta:x:1001:1001::/home/menta:/bin/sh
ユーザーが作成されたか確認しましょう。
/etc/passwd
は、システム上の全ユーザー情報が記録されているファイルです。
grep menta
で menta という文字列が含まれる行を検索し、ユーザー情報が正しく追加されていることを確認します。
sudo visudoの設置(VM)
$ export TERM=xterm
$ sudo visudo
#下部に追加
menta ALL=(ALL) NOPASSWD:ALL
$ sudo cat /etc/sudoers #記載できたかの確認
$ exit
上記を設定することで、ユーザーmenta が sudo を実行するときにパスワードを入力が不要に。
設定してない場合
menta@vm:~$ sudo apt update
[sudo] password for menta: ← 入力が必要
ssh認証鍵(ローカル)
% cd ~/.ssh
% ssh-keygen -t rsa
上記を押下すると以下の様に聞かれるのでコメントアウトを参考に進めます。
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/PC_User/.ssh/id_rsa): #wp-serverと入力
Enter passphrase (empty for no passphrase): #何も入力せず、Enterを押下
Enter same passphrase again: #何も入力せず、Enterを押下
なぜ.sshで鍵を作成する?
- SSH がデフォルトで見る場所だから
- 秘密鍵を安全に管理するための専用ディレクトリ
SSH Config を設定(ローカル)
% vi ~/.ssh/config
自身のIPアドレスに合わせて以下を設定。
Host wp.techbull.cloud
Hostname 192.168.64.55 # multipass list で確認したもの
User menta
Port 22
IdentityFile ~/.ssh/wp-server
上記の設定をすることでMacからのssh接続が簡単に!
- 上記の設定を行わないと
ssh -i ~/.ssh/wp-server menta@192.168.64.55 -p 22 - 記載すると
ssh wp.techbull.cloud
公開鍵をコピー(ローカル)
% cat ~/.ssh/wp-server.pub
ここで出た鍵(私の場合はssh-rsa ~MacBook-Pro.localまで)をコピーしておきましょう。
sshd_configの設定(VM)
% multipass shell wp-server
$ sudo su
$ vi /etc/ssh/sshd_config
以下を設定
PubkeyAuthentication yes
PermitRootLogin yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
sshd_config は SSH デーモンの設定ファイルで、ここを書き換えると SSH のログイン方法やセキュリティが変わります。
設定項目 | 効果 |
---|---|
PubkeyAuthentication yes | 公開鍵でのログインを有効化 |
PermitRootLogin yes | root での直接ログインを許可 |
AuthorizedKeysFile .ssh/authorized_keys | 公開鍵ファイルの場所を指定 |
PasswordAuthentication no | パスワードログインを禁止し、鍵認証のみ有効 |
公開鍵を VM に配置(VM)
% multipass shell wp-server
$ sudo mkdir -p /home/menta
$ sudo chown menta:menta /home/menta
$ sudo su - menta
$ mkdir ~/.ssh
$ vi ~/.ssh/authorized_keys #控えておいた公開鍵を貼り付ける
ユーザmentaにスイッチし、ターミナル環境で作成した公開鍵を配置。
※スイッチ前にユーザmentaのホームディレクトリが作成されていないため、作成し、所有者・所有グループを設定します。
なぜメンタユーザーにスイッチした?
公開鍵認証方式で SSH ログインできるようにするため
menta ユーザーで SSH するなら、そのユーザーの ~/.ssh/authorized_keys に公開鍵を置く必要があるから
sshdサービスを再起動(VM)
$ sudo systemctl restart ssh
今までの設定を反映させるため再起動。
SShで接続できるか確認(ローカル)
% ssh wp.techbull.cloud
hosts名をIPアドレスに変換(ローカル Mac で)
sudo vi /etc/hosts
# 以下に合わせる
192.168.64.55 wp.techbull.cloud1
お疲れ様でした、上記のコマンドでVMに接続できると思います。
まとめ
本記事を執筆したことで何をしているか曖昧だった部分が理解できたと思います。
今後、multipassでVMを作成する際はこの資料を使っていきます!