Esxi専用のサーバーがあります。 esxiにユーザーを追加し、そのキーを/etc/keys/keys-user/authorized_keys
に追加しました
次に、サーバーを再起動すると、そのキーフォルダーがなくなりました。次に、いくつかの永続ストレージにキーをコピーしてから/etc/rc.local.d/local.sh
にコマンドを入力する必要があることがわかりましたが、そのファイルでさえ再起動後に書き換えられることがわかりました。だから私の質問は
UPADTEホームIPのみがesxiにアクセスでき、他には何もアクセスできないファイアウォールルールを設定しました。これで、接続できない場合に備えて、SSHで接続してファイアウォールをしばらく無効にし、新しいIPのファイアウォールルールを変更してからファイアウォールを再度有効にすることができます。だから私はsshアクセスが欲しかったのです。数日前、ブルートフォース攻撃のためにrootアカウントがロックされました。したがって、問題を修正するためにsshで接続できる追加のユーザーが必要な場合に備えて。 sskキーベースの認証を有効にしましたが、公開されています。したがって、sshをホームIPのみに制限したいので、緊急時にIPが変更された場合は、esxiを再起動して、パスワードベースの認証が機能するようにしてからファイアウォールを修正できます。私はホームユーザーなので、ESXIでハードウェアファイアウォールを購入する余裕はありません。
私は内部マシン用のpfsenseを持っています。公開サイトはありませんが、ラボのものだけです。 pfsenseの後ろにesxiを置きたくないのは、pfsenseに問題があるとロックアウトされ、すべてを再インストールする以外に方法がないからです。
私の経験では、/etc/rc.local.d/local.sh
は実際には再起動しても持続します。ファイルは1時間に1回だけ、またはクリーンシャットダウン中にのみ保存されることに注意してください( ESXiがブートディスクに書き込む頻度は? を参照)。
したがって、変更が保存されない理由の1つは、reboot
ではなく、ハードリセットまたは電源の入れ直しを行った場合です。
/sbin/auto-backup.sh
を発行すると、システムが変更を保存するかどうかを確認できます。これにより、ファイルがすぐにブートバンクに保存されます( ESXi 4.x/5.xで構成の変更を永続化する方法 を参照してください。 v6.xに適用されます)。
私のESXiもパブリックネットワーク上にあります。 /etc/ssh/sshd_config
で変更しました
PermitRootLogin yes
に
PermitRootLogin prohibit-password
PubkeyAuthentication yes
これにより、rootユーザーが無効なパスワードの試行にロックされる可能性がすでに減少します(そもそもrootユーザーにはパスワードが許可されていないため)。さらに、キーベースの認証は、パスワード認証よりもはるかに節約できると考えられています(キーを安全に保管している場合)。
パスワード認証を完全に無効にする場合は、次の設定も必要になります
UsePAM no
PasswordAuthentication no
ただし、これらの変更は永続的(/etc/ssh/sshd_config
は/sbin/auto-backup.sh
で保存されるため)および即時(no sshdは実際にはinetdによって起動されるため、sshdの場合は再起動します。したがって、ここでは非永続的な変更を行う方法はありません。
それでもファイアウォールルールを変更したい場合は、内容を含むファイルssha_from_anywhere.xml
を作成できます。
<ConfigRoot>
<service id='1000'>
<id>sshServer</id>
<rule id='0000'>
<direction>inbound</direction>
<protocol>tcp</protocol>
<porttype>dst</porttype>
<port>22</port>
</rule>
<enabled>true</enabled>
<required>true</required>
</service>
</ConfigRoot>
永続ストレージに保存し、起動時に/etc/vmware/firewall/
にコピーします(これも/etc/rc.local.d/local.sh
から)。次に、vSphereクライアントで既存のファイアウォールルールを変更して、ローカルアドレスのみを許可します。
システムが再起動すると、sshポートが世界中に公開されます。次に、ログインして/etc/vmware/firewall/ssha_from_anywhere.xml
を削除し、ファイアウォールをリロードする必要があります。
esxcli network firewall refresh
ただし、beforeを実行するには、接続を許可するIPアドレスを調整する必要があります。 ssh。これは、vSphereクライアントでも、または直接/etc/vmware/firewall/service.xml
で実行することをお勧めします。前者の場合(vSphereクライアントインターフェイスを無効にしなかった場合)、vSphereクライアントでログインしてIPアドレスを変更するだけなので、手順全体が無意味に見えます。
VSphereクライアントで行われた変更は、/etc/vmware/esx.conf
ファイルに次のように反映されます。
/firewall/services/sshServer/allowedip[0000]/ipstr = "192.168.1.1"
/firewall/services/sshServer/allowedip[0001]/ipstr = "192.168.2.0/24"
このファイルは再起動しても保持されることはわかっていますが、変更がどのようにアクティブ化されるかはわかりません。たぶん、ファイルを編集してからreboot
?そして、2回目の再起動後、/etc/vmware/firewall/ssha_from_anywhere.xml
を削除し、ファイアウォールをリロードします。
幸運を!
マーティン