vHoge

VMwareのアレコレ備忘録。CLIでがんばるネタ多め。

vCSA も公開鍵認証で SSH 接続する

vCSA のコンソールに SSH で接続する際、大体の場合は以下で接続。

$ ssh root@【vCSA の IP or FQDN】
VMware vCenter Server 7.0.1.00200

Type: vCenter Server with an embedded Platform Services Controller

root@【vCSA の IP or FQDN】's password:
Connected to service

    * List APIs: "help api list"
    * List Plugins: "help pi list"
    * Launch BASH: "shell"

Command>

とは言え。。。

  • SSH で root 接続
  • パスワードログイン

と、通常の運用だとあまりやらない運用(ですよね?)。
大抵は root は許可せず、一般ユーザで公開鍵認証してsudoが標準。

なので、vCSA でも公開鍵認証でログインできるようにしてみる。

対象環境

vCSA 7.0.1
(VMware Photon OS 3.0 / PHOTON_BUILD_NUMBER=11dd065)

接続用ユーザを作る

まずは vCSA に root で入り、ログイン用の一般ユーザを作る。

root@vcsa03 [ ~ ]# useradd -g users -s /bin/bash -m mirie

シェルは何も指定しないと/bin/applianceshがデフォルトシェルになるので、 シェル指定はお好みで(と言ってもshbashぐらいしか入ってないけど)。

useradd -D

# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/appliancesh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

root@vcsa03 [ ~ ]# grep mirie /etc/passwd
mirie:x:1047:100::/home/mirie:/bin/bash

パスワードも設定。

root@vcsa03 [ ~ ]# passwd mirie
New password:
Retype new password:
passwd: password updated successfully

sudo は入っているので sudoers を編集して sudo できるようにしておく。

root@vcsa03 [ ~ ]# visudo
# 末尾に「mirie ALL=(ALL) ALL」みたいな感じで足しておく。

公開鍵を作成して設置

公開鍵を作成する。
以下はクライアント PC 環境から(今回の場合は WSL2 上の Ubuntu)

$ ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/mirie/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mirie/.ssh/id_rsa
Your public key has been saved in /home/mirie/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:nGUTBVzHn9PmsUY8JvRbY7TC2SOTj0olPPtQpiEgU4k mirie@HAKUTAKA
The key's randomart image is:
+---[RSA 4096]----+
|      o...o+o..  |
|     E o  .. o.. |
|      o . = o B.+|
|       . = * % /=|
|        S . X @oX|
|           = . =.|
|          . + .  |
|           . .   |
|                 |
+----[SHA256]-----+

$ ls ~/.ssh/
id_rsa  id_rsa.pub  known_hosts

公開鍵を vCSA へ転送し登録する。

$ ssh-copy-id -i ~/.ssh/id_rsa.pub mirie@【vCSA の IP or FQDN】
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/mirie/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

VMware vCenter Server 7.0.1.00200

Type: vCenter Server with an embedded Platform Services Controller

mirie@【vCSA の IP or FQDN】's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'mirie@【vCSA の IP or FQDN】'"
and check to make sure that only the key(s) you wanted were added.

これで SSH すればパスワードを聞かれることなくログインできる(はず)。

$ ssh 192.168.0.63

VMware vCenter Server 7.0.1.00200

Type: vCenter Server with an embedded Platform Services Controller

Last login: Mon Jan  4 13:28:10 2021 from 192.168.0.12
mirie@vcsa03 [ ~ ]$

sshd の設定を変える前に必ず公開鍵認証が通ることを確認しておきましょう。。。
(←確認せずに設定変えて SSH ログインできなくなった人)

root ログイン / パスワード認証を封じる

再び vCSA 側にログインして sshd の設定を変えておく。

root@vcsa03 [ ~ ]# vi /etc/ssh/sshd_config
# 34行目辺りに以下を足しておく
PermitRootLogin no

# 60行目辺りに以下を足しておく
PasswordAuthentication no

書き換えたら sshd を再起動して祈る。

root@vcsa03 [ ~ ]# systemctl restart sshd

これで root ログイン/パスワード認証はできなくなる。

$ ssh root@【vCSA の IP or FQDN】

VMware vCenter Server 7.0.1.00200

Type: vCenter Server with an embedded Platform Services Controller

root@【vCSA の IP or FQDN】: Permission denied (publickey).
# 秘密鍵を一時的に退避
$ ssh 【vCSA の IP or FQDN】

VMware vCenter Server 7.0.1.00200

Type: vCenter Server with an embedded Platform Services Controller

mirie@【vCSA の IP or FQDN】: Permission denied (publickey).




vCSA と言えど、基本的にはただの Linux(Photon OS) なので、
やり方は他の Linux と同じでした。
(違うのはuseraddでデフォルトシェルがapplianceshになるぐらい?)

あんまりやってないのは検証してないからか面倒なだけなのか…

おまけ:root になる

一般ユーザでログイン後、suで root になれます。

mirie@vcsa03 [ ~ ]$ su -
Password:
Password:
Connected to service

    * List APIs: "help api list"
    * List Plugins: "help pi list"
    * Launch BASH: "shell"

Command> shell
Shell access is granted to root
root@vcsa03 [ ~ ]#

sudo -sでも root になれますが、この場合applianceshが出てこない。

mirie@vcsa03 [ ~ ]$ sudo -s
[sudo] password for mirie
root [ /home/mirie ]#

これ自体はsudo -sの挙動通りと言えば挙動通り。
sudo -ssuのオプション周りの話は結構深いので割愛。追っかけてみると面白いかと…