[ESXi 6.5] Mac에서 SSH 터널링으로 2대 이상의 ESXi 서버 개별 원격콘솔 접속 Computer Tip

작년 11월에 Ryzen CPU PC를 구입하여 ESXi 6.5 서버를 구축한지 벌써 5개월이 흘러갑니다.

Ryzen 서버 뿐만 아니라 128G 메모리를 가진 제온 서버도 ESXi 6.5 서버를 구축하여
2대의 ESXi 서버를 돌리고 있습니다.
물론 vCenter를 따로 돌려도 되지만, 어느정도 해 보다가 그냥
단독 ESXi 서버를 돌리고 있습니다.

그동안 DevOps를 구축하는 등등의 여러 작업을 하고는 하는데 아직까지는 성공적으로
잘 사용하고 있습니다.

그러다가 이제는 좀 원격으로 작업을 하는 것을 원해서 별도의 VPN 대신 
SSH 터널링을 통하여 작업을 진행하고는 합니다.

그런데 2대의 ESXi 서버를 HTTPS 인 443으로 접속을 하는데 다음과 같이 localhost로 로컬 터널링을 구축했었습니다.

-L 10443:192.168.77.1:443
-L 20443:192.168.78.1:443

그러면 잘 되겠거니.. 하고 접속을 해 보면,

위와 같이 [object Object] 와 같이 오류가 발생하면서 두 대 중에 하나는 연결이 안되고 했습니다.

원인을 여러 가지 찾아본 결과 IP 별로 쿠키를 가지고 처리를 하는데, 로컬호스트의 다른 포트로 연결을 하였으므로
쿠키가 꼬여서 제대로 동작을 안하는 것이 원인이라 합니다.

그래서 이것을 벗어날 방법은 loopback 주소인  127.0.0.1 이외에 
127.0.0.2 ... 등을 추가하여 동일 룹백을 바라보게 하고 이 다른 룹백 IP에 할당을 하면
해결이 되었습니다.

기본 SSH client 를 사용해도 되지만, Shimo 라는 것을 별도 구입했습니다.
(VPN을 시도하려고 구입했는데 SSH client 로 사용했다는...)


1) 룹백 주소 활성화

우선은 시스템이 기본적으로 로그인 될 때, startup.sh 를 기동시키는데
loopback 주소를 활성화 시키도록 합니다.

sudo vim /Library/LaunchDaemons/com.startup.plist
명령으로

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>EnvironmentVariables</key>
    <dict>
      <key>PATH</key>
      <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:</string>
    </dict>
    <key>Label</key>
    <string>com.startup</string>
    <key>Program</key>
    <string>/Users/사용자/sbin/startup.sh</string>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
    <key>LaunchOnlyOnce</key>        
    <true/>
    <key>StandardOutPath</key>
    <string>/tmp/startup.stdout</string>
    <key>StandardErrorPath</key>
    <string>/tmp/startup.stderr</string>
    <key>UserName</key>
    <string>root</string>
    <key>GroupName</key>
    <string>wheel</string>
    <key>InitGroups</key>
    <true/>
  </dict>
</plist>

의 내용을 넣습니다.
사용자 또는 startup.sh 위치만 확인하십시오.

이제 startup.sh에는 다음 내용을 넣습니다.

#!/bin/bash
sudo ifconfig lo0 alias 127.0.0.2 up
sudo ifconfig lo0 alias 127.0.0.3 up
sudo ifconfig lo0 alias 127.0.0.4 up
sudo ifconfig lo0 alias 127.0.0.5 up
sudo ifconfig lo0 alias 127.0.0.6 up

이제는 com.startup.plist 를 활성화 하려면,

sudo launchctl load -w /Library/LaunchDaemons/com.startup.plist

라고 해 줍니다. (load 대신 unload 하면 해지시키는 겁니다)

이제 맥을 리붓해서 

ping 127.0.0.2
ping 127.0.0.3
ping 127.0.0.4

등으로 ping 이 되는지 확인합니다.

동일 lo0 인터페이스로 다른 ip를 가지는 것이 됩니다.


2) Shimo 설치 및 설정


저는 49유로를 주고 구입을 했습니다.
(항상 사용하게 되는 것이라, 구입을 해도 괜찮은 듯)

이제 설정을 확인해 봅니다.

+ 를 눌러 새로 추가하거나, 기존의 것을 더블클릭하면 됩니다.

기본 정보를 넣고,

각각의 ESX 서버에 대하여 로컬의 서로다른 127.0.0.3, 127.0.0.4 에 대응을 시켜줍니다.

또한 원격콘솔도 접속하기 위해서는 902 포트도 동일하게 터널링 시켜 줍니다.

또한 연결설정이 완료된 다음에는 mtr.sh 이라고 하는 특정 쉘을 돌리도록 지정하였습니다.

참고로, mtr.sh 는 다음과 같습니다.

my_mount() {

MHOST=$1

MPORT=$2

MUSER=$3

MPASS=$4

MNAME=$5


mount | grep ${HOME}/${MNAME}

if [ $? -ne 0 ];then

if [ ! -e ${HOME}/${MNAME} ]; then

mkdir -p ${HOME}/${MNAME}

fi

echo "Mounting ${MNAME}..."

mount_smbfs //${MUSER}:${MPASS}@${MHOST}:${MPORT}/${MNAME} ${HOME}/${MNAME}

fi

}


mount | grep naswork

if [ $? -ne 0 ];then

my_mount localhost 445 toor password naswork

fi


mount | grep nasdata

if [ $? -ne 0 ];then

my_mount localhost 445 toor password nasdata

fi


삼바나 윈도우 공유폴더를 연결합니다.

(예전 Freenas로 공유하기 참고)



3) 연결 확인

이제는 사파리, 크롬, 파이어폭스 등의 웹브라우저를 열어,

https://127.0.0.3


https://127.0.0.4

에 각각 접속이 되는지 확인해 보고,

위와 같이 특정 머신에서 원격 콘솔을 접속해보면,

위와 같이 잘 동작합니다.
(물론 브라우저의 콘솔 연결을 해도 되지만, 반응 등이 원격 콘솔이 더 빠른 듯 하네요)


어느 분께는 도움이 되셨기를 ..

핑백

덧글

댓글 입력 영역

구글애드텍스트