Gaining SSH Access To VMWare ESXi

Last Updated on November 10, 2011 GMT-0800 by Jordan

*UPDATE* If you’re using ESXi 4.1 you no longer are required to manually enable SSH. You can do this via the “Troubleshooting” menu. More instructions here http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1017910

I was trying to get access to VMWare ESXi as this is the only way to access the images for each Virtual Machine as snapshots seem to have messed up an Exchange install. I will go into more depth below. But first, the following steps are required to open up SSH access to your ESXi Machine.

ESXi 3.5 does ship with the ability to run SSH, but this is disabled by default (and is not supported). If you just need to access the console of ESXi, then you only need to perform steps 1 – 3.

1) At the console of the ESXi host, press ALT-F1 to access the console window.
2) Enter unsupported in the console and then press Enter. You will not see the text you type in.
3) If you typed in unsupported correctly, you will see the Tech Support Mode warning and a password prompt. Enter the password for the root login.
4) You should then see the prompt of ~ #. Edit the file inetd.conf (enter the command vi /etc/inetd.conf).
5) Find the line that begins with #ssh and remove the #. Then save the file. If you’re new to using vi, then move the cursor down to #ssh line and then press the Insert key. Move the cursor over one space and then hit backspace to delete the #. Then press ESC and type in :wq to save the file and exit vi. If you make a mistake, you can press the ESC key and then type it :q! to quit vi without saving the file.
6) Once you’ve closed the vi editor, run the command /sbin/services.sh restart to restart the management services. You’ll now be able to connect to the ESXi host with a SSH client.

Update for ESXi 3.5 Update 2 – With Update 2 the service.sh command no longer restarts the inetd process which enables SSH access. You can either restart your host or run ps | grep inetd to determine the process ID for the inetd process. The output of the command will be something like 1299 1299 busybox      inetd, and the process ID is 1299. Then run kill -HUP <process_id> (kill -HUP 1299 in this example) and you’ll then be able to access the host via SSH.

Credit to the above steps go out to vm-help.com and you can read the above steps and comments on thier site.

The main reason why I required this, is the snapshots provided with VMWare work great. But I had to re-install exchange becuase of a configuration change that couldn’t be reversed. I had created a Active Directory Child Domain on an existing Domain, and then had setup Exchange 2007. But in the long run, this wasn’t required, instead I wanted to use our existing Domain. Removing the new Child Domain and deleting the Domain Controller/Demoting woudl have caused issues with Exchange.

So I decided to use ESXi Snapshot Manager to revert back to when I created a Snapshot after install Windows Server 2003, as it was a clean install. Once I did then and then went on to install Exchange again. Exchange Setup had complained that the server’s role was already installed and setup. Which was not the case, so I don’t know what really happened, either way. I’m going to make backups through SSH from now on.


Did you like this article?