Post

Windows OpenSSH로 GUI 프로그램을 실행시켜 보자.

목차


Windows OpenSSH Server 로 GUI 프로그램을 실행시켜보자.


cmd 열어 유저의 session id 획득

image

1
2
3
4
query session | FIND "user_name"

# CMD AWK 명령어가 존재할 경우
# query session | FIND "user_name" | awk -F ' ' '{ print $3 }'

현재 session id는 1이라는 것이 판별됨.


https://docs.microsoft.com/ko-kr/sysinternals/downloads/psexec

psexec 명령어 설치

PsTools를 설치하여 C:\Windows\System32\ 에 복사

cmd창 열어 PsExec.exe 가 동작하는지 확인

image

http://gnuwin32.sourceforge.net/packages/gawk.htm

윈도우 cmd awk 설치


윈도우 설정 → 앱 → 앱 및 기능 → 선택적 기능 → 기능 추가

OpenSSH 서버 설치

image

C:\ProgramData 파일은 숨김 폴더로써 숨김 파일 및 폴더를 볼 수 있게끔 제어판 > 파일 탐색기 옵션에서 설정해줘야 합니다.

C:\ProgramData\ssh 의 sshd_config 수정

맨 마지막줄의

Match Group administrators ….

AuthorizedKeysFile….

두 줄 주석처리

1
2
# Match Group administrators
#        AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

(해당 두 줄의 내용을 주석처리해야 C:\Users\<USRNAME>\.ssh 의 authorized_keys 내용을 인식합니다.

이후 sshd_config의 내용 세팅


Powershell을 관리자 권한으로 실행

Get-Service sshd 명령어로 sshd 서비스 확인

image

Start-Service sshd 명령어로 sshd 서비스 실행

image

Running 상태 확인 완료

Stop-Service sshd 명령어로 sshd 서비스 종료 가능

image

Set-Service -Name sshd -StartupType 'Automatic’ 명령어로 서비스 자동 실행 등록 가능

Public Key, Priv Key 등록 이후 C:\Users\user_name\.ssh\authorized_keys 파일을 만들어 사용하는 공개키 ( id_rsa.pub ) 값을 복사 + 붙여넣기 하여 암호를 입력하지 않고 키교환으로 ssh 연결을 맺도록 진행.

방화벽으로 SSH 포트 열기 (이부분은 생략..)

리눅스 등의 외부에서 데스크탑 ssh 접속 가능한지 체크

ssh user_name@ip -p port 시 cmd 창이 열려야 함.

image

ssh로 notepad.exe, Beyond Compare.exe 등의 GUI 프로그램도 열어봄

실행 명령어를 사용하기 위해 맨 처음 query session 명령어를 통해 알아낸 session id 값이 필요함.

1
ssh user_name@IP "psexec -s -i <session_id> \"Program_Path\""

SSH가 연결된 상태라면 Session ID 를 ssh를 통해 가져올 수도 있다.

1
ssh user_name@ip "query session | FIND \"user_name\"" | awk -F ' ' '{ print $3 }'

ssh로 원격지에서 session id 값을 잘 가져왔음

image

이후 위 명령어대로 입력 시 정상적으로 실행이 되었음

image

프로그램을 닫고 나면 exited… 출력 내용과 함께 프로그램이 종료됨.

image

윈도우 ssh 연결 시도 성공

다음에는 윈도우 ssh를 통해 vscode와 beyond compare를 연동시키는 방법을 알아보겠다.

This post is licensed under CC BY 4.0 by the author.