FURYU Tech Blog - フリュー株式会社

フリュー株式会社の開発者が技術情報を発信するブログです。

ESXiサーバにパスワードなしでSSH接続したい

ピクトリンク事業部開発部インフラ課の「部署名が変わったのに未だ慣れず、前世の記憶に苛まれている系エンジニア」の橋本です。こんにちは。今年がもう終わるとか信じたくないです。

本記事は フリューAdvent Calendar 2018 の12/4分です。

 

さて本題。

ESXiはVMware社 が提供する、仮想環境を構築する上で便利に使える強力なハイパーバイザです。

無料で使えるライセンスもあるので、利用されている方も多いのではないでしょうか。

 

バージョン5以前はvSphereClientの導入が必要でしたが、バージョン6以降からは割り当てたIPアドレスにブラウザからアクセスするだけでGUIによる視覚的な操作も可能です。これまでに比べるとべんりでつよいです。

 

しかし、何か作業をする際にその都度IDとパスワードによる認証を行うのは、正直面倒です。

面倒はないほうが幸せです。孫子曰く「兵は拙速を尊ぶ」とも言います。書いてる私は兵ではないですし、兵の人がこの記事を読んでいる率は低い気もしますが、簡潔なのは良いことです。(この一文が冗長であるという厳然たる事実は全力で見逃してください)

 

また、コマンドライン操作であれば自動化もしやすいです。

そのため、楽ちんにSSH接続できる環境にしましょう! というのが今回のお題です。

やりかた

  1. SSH接続を許可する
  2. 接続するユーザを作成する
  3. ユーザに権限を付与する
  4. 鍵ファイルを配置する
  5. ssh/config に接続設定を書く

SSH接続を許可する

ESXiサーバのデフォルト設定では、SSH接続を拒否するようになっています。

GUIにID, パスワードでログインしてから[アクション] → [サービス] → [SSHの有効化] を選択しましょう。

接続するユーザを作成する

[ホスト] → [管理] から [セキュリティとユーザ] タブを選択し、[ユーザーの追加]から設定してください。

英数字大文字小文字を含む、それなりに強いパスワード設定が求められます。

ユーザに権限を付与する

[アクション] → [権限]から、先ほど作成したユーザに対して権限を設定します。

そのユーザで行いたいことによって、適切な権限を設定します。

 

ゲストサーバの状態を確認する用途であれば「読み取り専用」で十分ですし、ホストの起動/停止まで自動化したいという欲求があるならば「システム管理者」といった具合にです。

「システム管理者」はなんでもできるので、迷ったらコレにしておけば、なんて気もするかもしれませんが、システムを壊さないためにも不要な権限付与は控えるほうが無難です。

もしユーザを乗っ取られたときにえらい目に遭いたくもないですし。

鍵ファイルを配置する

以降はコマンドラインでの操作です。

鍵の生成

接続するユーザ用の鍵ファイルを作成します。

$ ssh-keygen

ssh接続用の公開鍵をすでにお持ちの場合、鍵の作成はスキップして大丈夫です。

パスワードなしで接続したいので、パスフレーズは空のままにしておきます。github等で秘密鍵を公開してしまってはダメですよ。

鍵の配置

$ ssh root@ESXiサーバのIP 'mkdir /etc/ssh/keys-ユーザ名'
$ scp (鍵ファイルを作ったpath)/id_rsa.pub root@ESXiサーバのIP:/etc/ssh/keys-ユーザ名/authorized_keys

接続するESXi、接続したいユーザ名に置き換えて実行してください。rootのパスワード入力を求められます。

公開鍵(id_rsa.pub)はauthorized_keysという名前で置かなければなりません。

 

具体例として、先ほど作成して権限を付与したユーザがhogeというユーザだった場合は、

/etc/ssh/keys-hoge/authorized_keys

という形にしてやる必要があります。

.ssh/config に接続設定を書く

ここまでで完了でも良いのですが、より簡略化を進めるために ~/.ssh/config に以下の設定を追記しましょう。

HOST ESXサーバのIP
   User ユーザ名
   IdentityFile "鍵ファイルのpath/id_rsa"

たとえば、esx-hoge-01, esx-hoge-02, esx-hoge-03… というESXiサーバにhogeユーザで便利に接続したいのであれば、以下のようにまとめてやることも可能です。

HOST esx-hoge-*
   User hoge
   IdentityFile "/home/hoge/.ssh/id_rsa"

こうしておくと、

$ ssh esx-hoge-01

としてやるだけでパスフレーズなしでSSH接続することが可能です。楽ちんになりました。

 

楽ができるって幸せですね! 手を抜くためには全力を尽くしましょうね。