윈도우에서 Mobaxterm 대신 Openssh로

1.
DMA 매매를 위한 모든 이용자는 VPN을 사용합니다. DMA서버는 증권사 DMZ환경에 있기때문에 DMA환경에서 운영하는 서버에 접속하려면 증권사(선물사)가 제공하는 VPN망을 이용하여야 하기 때문입니다. 윈도우환경의 단말(UI)로 서버에 접속하기 위해서는 금융회사가 제공하는 VPN Client를 이용하여야 합니다. 저와 같이 단말보다는 서버에 접속해서 작업을 하여야 하는 경우 윈도우클라이언트는 무척 불편합니다. 이 때문에 금융회사에 리눅스 클라이언트가 있는지 꼭 물어봅니다. 대부분 리눅스 클라이언트를 제공하지만 주니퍼 네트웍스의 장비를 사용하는 경우 현재까지 리눅스는 불가능합니다. Juniper Secure Connect의 프로토콜을 리눅스에 구현한 프로그램이 없기때문입니다. 이름은 유사한 Cisco Secure Connect의 경우 리눅스 버전이나 OpenConnect를 이용합니다.

윈도우 환경의 이용자라면 장점이 아니지만 리눅스를 사용하는 이용자라면 리눅스로 vpn 클라이언트를 실행하면 좋은 점이 많습니다.

첫째 ssh와 tmux를 자유롭게 사용할 수 있습니다. 서버에 원격으로 접속하는 표준환경인 ssh는 모든 리눅스 배포판에서 기본으로 제공합니다. 여기에 tmux를 서버에 설치해놓으면 pane을 통하여 다양한 작업을 동시에 할 수 있습니다
둘째 업무환경과 외부접속환경을 통일시킬 수 있습니다. 대부분 DMA서버는 리눅스를 기본OS로 합니다. 이 때문에 서버관리를 손 쉽게 배우는 방법중 하나가 업무환경의 OS를 리눅스로 바꾸는 것입니다. 저도 이런 이유가 첫 출발이었습니다.
셋재 단말시험이 필요한 경우에는 가상머신(VM)을 만들어서 접속합니다. 불필요한 리소스를 낭비할 이유가 없습니다.

마지막 세번째 이유때문에 터널링이 중요합니다. 그동안 그동안 mobaxterm의 tunneling기능을 이용하여 서버에 접속하였습니다. Mobaxterm의 터널링은 직관적인 UI때문에 누구나 쉽게 적응할 수 있습니다.


2.
그동안 이상과 같은 방식으로 단말시험을 하였습니다만 다른 환경을 고민해야 하는 일이 생겼습니다. 윈도우가 사용하는 리소스를 최소화하여야 하기 위한 최적화작업이 필요했습니다. 그래서 고민한 것중의 하나가 Mobaxterm을 대신하면서 리소스는 아주 적게 사용하는 방법을 찾았습니다. putty가 대안일 수 있지만 더 적은 리소스를 사용하는 방법이 필요했습니다. 그래서 선택한 것이 윈도우 10, 11에서 기본으로 제공하는 ssh client를 사용하는 것입니다. openssh client를 윈도우에 포팅하여 제공합니다. 물론 사용하려면 약간의 작업을 해야 합니다. Apps화면에서 Optional Features를 선택한 후 openssh client를 선택하는 작업입니다.

이상과 같은 작업을 한 후 powershell이나 command prompt 창을 열어서 ssh를 입력하면 바로 사용할 수 있습니다.

여기서 SSH 로컬 포트 포워딩( local Port Forwarding)을 하는 명령어는 아래와 같습니다. 리눅스도 같습니다.

저와 같은 경우 이렇게 입력하였습니다. 16501은 단말이 사용하는 포트번호이고, 192로 시작하는 주소는 VPN을 통해 접속하는 서버입니다. 172로 시작하는 주소는 vpn 클라이언트를 실행한 서버입니다. 이렇게 하면 vpn클라이언트를 실행하지 않고 – 정확히 표현하면 외주 – 단말이 서버에 접속합니다.

ssh -L 16501:192.168.1.1:16501 smallake@172.30.1.115

powershell등을 열어서 위와 같이 명령어를 입력하면 편합니다. 다만 매번 172서버에 로그인을 하기 위해 패스워드를 입력해야 합니다. 이마저도 불편하다고 하면 SSH Key pairs를 생성하여 172서버에 등록합니다.

PS C:\Users\smallake> ssh-keygen -t rsa -b 4096
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\smallake\.ssh\id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\smallake\.ssh\id_rsa
Your public key has been saved in C:\Users\YourUsername\.ssh\id_rsa.pub
PS C:\Users\smallake> type $env:USERPROFILE\.ssh\id_rsa.pub | ssh ium@172.30.1.111 “mkdir -p .ssh && chmod 700 .ssh && cat >> .ssh/authorized_keys && chmod 600 .ssh/authorized_keys”

마지막 문장이 윈도우에서 생성한 공개키를 서버에 등록하는 명령입니다.Gemini의 도움을 받아서 아래와 같은 Shell Script를 만들었습니다.

# Parameters
$localPort = 8080 # Port on your Windows machine
$remoteHost = “127.0.0.1” # Host relative to the SSH server (usually localhost)
$remotePort = 3306 # Port on the remote host (e.g., MySQL)
$sshUser = “your_username”
$sshServer = “your_server_ip”

Write-Host “Starting SSH Tunnel: localhost:${localPort} -> ${remoteHost}:${remotePort}” -ForegroundColor Cyan

# The -N flag prevents opening a shell session
ssh -L ${localPort}:${remoteHost}:${remotePort} -N -f ${sshUser}@${sshServer}

위의 변수를 제 환경에 맞게끔 입력한 후 실행한 결과입니다.

PS C:\Users\smallake\Downloads> .\start-tunnel.ps1
Starting SSH Tunnel: localhost:16501 -> 192.168.1.224.50:16501

위와 같이 로그온 화면을 정상적으로 실행하였습니다. 통신상태가 비정상이면 “서버에 접속할 수 없습니다”라는 오류가 발생하는데 발생하지 않습니다. 당연하죠. 하나더 단말이 접속하여야 하는 주소는 localhost 혹은 127.0.0.1입니다.

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.