labunix's blog

labunixのラボUnix

特定のホストからESXi(vSphere HyperVisor)に公開鍵でSSHログイン出来るようにする。

■特定のホストからESXi(vSphere HyperVisor)にパスワードなしでログイン出来るようにする。
 以前書いた「wakeonvm.sh」をパスワードなしで実行するため。

 公開/秘密鍵認証で、ESXi/ESX ホストへの SSH のアクセスを許可する (2080948)
 https://kb.vmware.com/s/article/2080948

 bashで動く「wakeonvm.sh」を作ってみた。
 http://labunix.hateblo.jp/entry/20171020/1508498494

■クライアント(debian)側の秘密鍵と公開鍵を確認。
 無ければ「sshkeygen」で作成

$ ls .ssh/id_rsa*
.ssh/id_rsa  .ssh/id_rsa.pub

$ test -f .ssh/id_rsa || ssh-keygen -t rsa -b 4096 -C "your_account@hostname.domain"

$ HASH=$(for n in `seq 1 43`;do echo -n "X";done); \
  ssh-keygen -l -f .ssh/id_rsa.pub | \
    sed -e 's/:[A-z0-9]\{43\}/:'$HASH'/' -e 's/'$(hostname -s)'/hostname/'
4096 SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX labunix@hostname (RSA)

■ホスト側(ESXi/vSphere HyperVisor)側に公開鍵を登録
 下記「authorized_keys」に上記「.ssh/id_rsa.pub」の内容をコピー

# ls etc/ssh/keys-*/authorized_keys
etc/ssh/keys-root/authorized_keys

$ grep ^PermitRoot /etc/ssh/sshd_config
PermitRootLogin yes

■仮想マシンIDのリストを取得して自動起動を構成していない仮想マシン起動スクリプトのリストにしてしまえば
 あとはパイプで「sh」に渡すだけ。

$ ./myscripts/wakeonvm.sh | awk '/^[0-9]/&&($1>12)&&($1<40){print "./myscripts/wakeonvm.sh "$1}'
./myscripts/wakeonvm.sh 18
./myscripts/wakeonvm.sh 21
./myscripts/wakeonvm.sh 25
./myscripts/wakeonvm.sh 32
./myscripts/wakeonvm.sh 34
./myscripts/wakeonvm.sh 36
./myscripts/wakeonvm.sh 37
./myscripts/wakeonvm.sh 38
./myscripts/wakeonvm.sh 39