개발팁 & 유틸

Xshell 사용법 – 프로그램 기본 사용 및 SSH 세션 접속

Xshell이란?

넷사랑컴퓨터XshellTELNET/SSH 프로토콜로 리눅스 원격 호스트에 접속할 수 있는 윈도우용 터미널 에뮬레이터입니다. 국내 기업에서 개발된 프로그램으로 제품 한글화는 물론이고 SSH 접속 시 유니코드(UTF-8) 지원으로 한글로 설정된 리눅스에도 문제없이 접속할 수 있습니다.

인지하기 쉬운 인터페이스에 터미널을 사용하면서 유용할만한 부가적인 기능들이 많이 있어서 PuTTY 대체 프로그램으로도 적합합니다. 대표적인 기능들을 몇가지 적어보자면 다음과 같습니다.

  • SSH1, SSH2, TELNET, RLOGIN, SERIAL, FTP, SFTP 터미널 연결 지원
  • SSH의 다양한 사용자 인증 지원 (Public Key / Keyboard interactive / GSSAPI / PKCS#11)
  • 접속 기록을 세션 파일로 저장하여 다중 파일 관리
  • XModem/YModem/ZModem 지원
  • 스크립팅 지원 (JavaScript/VBScript/Python)
  • 여러 세션에 동시 문자열 보내기 / Global Input
  • 탈착이 가능한 탭 기반의 인터페이스
  • 터널링 및 프록시 기능
  • X11 포워딩 (Xmanager 사용 시) 기능
  • 넷사랑컴퓨터 제품(Xmanager, Xftp)과의 빠른 연동
  • 터미널 키 매핑 / 프로그램 키 매핑 기능
  • 터미널 하이라이트 (특정 키워드에 서식 적용)

Xshell은 개인이나 학생 사용자에게는 무료로 사용할 수 있는 라이선스가 제공됩니다. 기업에서 사용 시에는 사용자 당 라이선스 구매가 필요합니다. 제품 다운로드 관련 포스트는 하단을 참고해주세요.

Xshell 실행하기

기본적인 툴 사용법에 초점을 맞추어 SSH 세션에 접속하는 다양한 방법들을 알아보도록 하겠습니다.

시작하기 전에SSH 프로토콜로 원격 리눅스 세션에 접속하기 위해서는 먼저 접속할 원격 호스트에서 SSH 서버가 구동되고 있어야 합니다. 자세한 내용은 하단의 포스트를 참고해보세요.

이 포스트에서는 원격 서버의 구성이 모두 완료되었다고 가정합니다. 이제 Xshell 프로그램을 실행해보겠습니다.

Xshell 첫 실행 시에는 다음 창이 나타납니다. 세션 파일이나 호스트 키 등의 설정 정보를 저장할 위치를 지정하는 옵션입니다.

  • 기본 데이터 폴더 경로 : C:\Users\[사용자명]\Documents\NetSarang Computer\6

가능하면 기본 값으로 설정해주시고 하단의 ‘확인’을 클릭하여 계속 진행할 수 있습니다.

이제 Xshell 창이 열리는데요. 일반적인 인터페이스는 아래와 같으며 크게 세가지 영역이 보일 것입니다.

표준화된 이름은 아니지만 부르기 편하게 다음과 같이 패널을 나누어보았습니다. 각 패널 및 영역의 역할은 다음과 같습니다.

  • 도구 모음 패널 : Xshell의 옵션이나 세션 설정, 보기 설정 등의 다양한 도구 모음
  • 세션 관리 패널 : Xshell의 세션 리스트를 한 눈에 볼 수 있는 패널
  • 터미널 영역 : SSH 또는 TELNET 등의 프로토콜 연결 시 나타날 터미널 부분

처음 사용 시 기능이 많고 메뉴나 옵션이 많아 적응하기 어려워보일 수도 있지만, 일단 세션에 연결하고 필요할 때 하나하나 사용해본다면 금방 익숙해지게 될 것입니다.

Xshell 사용법 간단하게 살펴보기

Xshell은 탭 기반으로 구성된 인터페이스이며 각 탭에서는 SSHTELNET 등의 ‘세션’이 하나씩 열리게 됩니다. 세션이 열리지 않은 상태에서는 ‘로컬 셸’ 상태가 되며 여기서는 윈도우의 명령 프롬프트에서 사용되는 기본 명령어들을 사용할 수 있습니다. (예를 들면 ipconfignetstat 등의 CMD 명령어가 있습니다.)

이외에도 Xshell의 몇가지 로컬 셸 명령어가 있습니다. 버전 6 기준 로컬 셸 명령어는 다음을 참고해보세요. (로컬 셸에서 ‘help‘ 를 입력하면 자세히 알 수 있습니다.)

명령어설명사용 예
new새 세션을 생성하기 위해 '새로 만들기' 창이 열린다.new
open만들어진 세션에 연결하기 위해 '세션' 창이 열린다.
- open : '세션' 창 열기
- open [session] : 세션 파일 열기
open C:\SESSION\PATH\mysession
open mysession
edit현재 탭의 세션 등록 정보가 열린다.
세션에 연결되지 않았다면 기본 세션의 등록 정보가 열린다.
- edit : 현재 탭의 '등록 정보' 창 열기
- edit [session] : 지정한 세션의 '등록 정보' 창 열기
edit
edit C:\SESSION\PATH\mysession
list폴더 내 세션 등의 전체 목록을 보여준다.
파라미터 값은 다음과 같다.
- session : 현재 경로의 세션 목록
- option : Xshell 옵션 목록
- hostkey : 호스트 키 목록
- userkey : 사용자 키 목록
list
list session
cd현재 폴더에서 다른 폴더로 이동한다.
홈 디렉토리(~) 입력 시 기본 세션 경로로 이동한다.
cd
cd c:\Windows
cd ~
pwd현재 폴더의 위치를 출력한다.pwd
setXshell의 기타 옵션을 확인하고 변경한다.
set 만 입력했을 경우 전체 옵션을 보여준다.
set a=b 일 때 a의 값을 b 로 변경한다.
set
set AutoSaveHostKey=1
clearclear 만 입력했을 경우 터미널 화면을 지운다.
- screen : 터미널 화면 지우기
- address : 주소표시줄 입력 히스토리 지우기
- history : 로컬 셸 명령줄 히스토리 지우기
clear
clear history
help / ?Xshell 도움말을 띄운다.
help 뒤에 인자가 있으면 관련 도움말을 나타낸다.
(대문자 HELP는 cmd 도움말을 띄운다.)
?
help
help edit
quit / exit로컬 셸 상태에서 탭을 닫거나 프로그램에서 빠져나온다.exit
quit
sshSSH 프로토콜에 접속한다.
상세 내용은 help ssh로 확인 가능.
ssh [-p ][-a ][user:pass@]host[ port][;host[ port]]
ssh user@host
ssh user:passwd@host
ssh host
telnetTELNET 프로토콜에 접속한다.
상세 내용은 help telnet으로 확인 가능.
telnet [user@]host [port]
telnet user@host
telnet user:passwd@host
telnet host
rloginRLOGIN 프로토콜에 접속한다.
상세 내용은 help rlogin으로 확인 가능.
rlogin [user@]host [port]
rlogin user@host
rlogin user:passwd@host
rlogin host
sftpSFTP 프로토콜에 접속한다.
상세 내용은 help sftp으로 확인 가능.
sftp [user:pass@]host [port]
sftp user@host
sftp user:passwd@host
sftp host
ftpFTP 프로토콜에 접속한다.
상세 내용은 help rlogin으로 확인 가능.
sftp [user@]host [port]
ftp user@host
ftp user:passwd@host
ftp host
disconnect세션에 연결 중일 때 연결을 종료시킨다.
(대부분 이는 명령어보다 버튼 동작으로 종료하게된다.)
disconnect
reconnect연결이 끊긴 현재 탭에 기존 연결 정보로 다시 연결을 시도한다.reconnect

이번에는 간단히 프로그램을 살펴보도록 하겠습니다.

상단 도구 모음 패널에서 각 메뉴를 클릭하여 원하는 기능을 사용할 수 있습니다. 예를 들어 새로운 세션을 만드려면 [파일] 메뉴에서 [새로 만들기]를 클릭하면 됩니다.

Xshell 6에는 아래와 같이 탈착이 가능한 도구가 있습니다. 이는 상단 메뉴에서 [보기]를 클릭하면 나타납니다.

각 도구의 상단 제목을 잡고 드래그하여 분리하고 다른 도구와 병합하여 원하는 대로 레이아웃을 구성할 수 있습니다. 분리 가능한 여러 도구들을 정리하면 다음과 같습니다.

  • 세션 관리 창 : 세션 목록을 폴더별로 정리하거나 바로 연결
  • 작성 바 / 작성 창 : 현재 탭이나 여러 탭으로 문자열을 보낼 수 있는 영역
  • 빠른 명령 바 / 빠른 명령 창 : 사용자 지정 명령이나 바로가기를 모아볼 수 있는 패널

필요에 따라 도구가 필요없다면 숨길 수도 있습니다. 또는 Alt+S 키를 눌러 XshellPuTTY 창처럼 간단하게 표시할 수 있습니다.

이런식으로 구성된 레이아웃을 필요할 때 마다 바꿔가고 싶은 경우, 상단 [보기] – [레이아웃] 메뉴에서 현재 레이아웃 위치와 배치 상태를 저장할 수 있습니다.

Xshell의 ‘탭’ 또한 여러개 열어서 배치하고 구성할 수 있습니다.

하나의 경계선 내에 존재하는 ‘탭’들은 하나의 ‘탭 그룹’으로 불리며 탭 그룹 내에서는 탭 앞에 있는 번호(1, 2, 3…)를 참고하여 Alt+1, Alt+2, Alt+3 키를 눌러 빠른 탭 전환이 가능합니다. Ctrl+Shift+TAB 키(다음 탭 전환)와 Ctrl+TAB 키(다음 탭 그룹 전환)를 사용해도 좋습니다.

탭을 옮기려면 탭 부분에서 마우스를 잡고 원하는 위치로 드래그하여 놓으면 됩니다. 아래 사진과 같이 4방향으로 배치가 가능합니다.

그저 원버튼으로 빠르게 배치하고자 할 경우, 상단의 [탭] – [정렬] 메뉴를 사용하여 한 번에 배치할 수도 있습니다.

터미널을 큰 화면으로 보고 싶은 경우 전체 화면 기능을 사용하여 터미널 화면만 크게 보이게 할 수 있습니다.

여기서 전체 화면 형식은 두 가지가 있는데, 각각의 의미는 다음과 같습니다.

  • 전체 화면 : 현재 활성화된 탭 하나만 전체화면으로 전환
  • 다중 창 전체 화면 : 현재 보이는 탭 모두를 전체화면으로 전환

다중 창 전체화면을 선택하면 아래와 같이 보이는 탭 그룹을 모두 전체화면에서 보여줍니다.

Xshell로 SSH 세션 연결하기

이제 본격적으로 SSH 세션에 연결해보도록 하겠습니다. Xshell에서 SSH 세션에 연결하는 방법은 아래와 같이 여러 수단이 있습니다. 하나하나 알아보도록 하겠습니다.

터미널 영역의 로컬 셸에서 연결하기

로컬 셸에서 간단히 접속 정보를 입력하여 연결할 수 있습니다. 상단의 ‘로컬 셸 명령어’ 항목을 참고하여 프로토콜과 각 연결 정보를 입력하여 접속을 시도합니다.

  • 예시 1 : ssh myhost (‘myhost’ 호스트에 SSH 접속 시도)
  • 예시 2 : ssh user@myhost (‘myhost’ 호스트에 ‘user’ 사용자로 SSH 접속 시도)
  • 예시 3 : telnet user:passwd@myhost (‘myhost’ 호스트에 ‘user’ 사용자 ‘passwd’ 패스워드로 TELNET 접속 시도)

주소 표시줄에서 연결하기

이번에는 상단에 주소 표시줄에서 연결해보겠습니다. 연결 방법은 위 터미널 연결 시와 동일합니다. 다만 이번에는 프로토콜을 입력할 때 ssh:// 나 telnet:// 과 같이 입력해야 합니다.

  • 예시 1 : ssh://myhost (‘myhost’ 호스트에 SSH 접속 시도)
  • 예시 2 : telnet://user@192.168.1.123 (‘192.168.1.123’ 호스트에 ‘user’ 사용자로 TELNET 접속 시도)

세션 파일로 연결하기

본격적으로 Xshell의 사용 목적이기도 한 세션 파일을 생성해보도록 하겠습니다. 세션 파일을 만들면 추후 똑같은 정보를 반복해서 입력할 필요가 없어집니다. 세션은 쉽게 말해 접속 정보와 연결 방법, 보기 방식에 대한 여러가지 설정 내용이 담긴 파일이며 .xsh 형식의 확장자로 저장됩니다.

먼저 [파일] – [새로 만들기] 메뉴를 클릭합니다. 그러면 새 세션 파일에 대한 등록 정보 창이 열립니다.

이제 각 범주에서 세션의 연결 정보를 편집해야 합니다. 간단한 연결만 할 것이므로 주요 필수 정보만 입력해보겠습니다.

먼저 [연결] 범주의 [일반] 그룹에서는 세션 파일의 이름이나 연결 정보를 편집할 수 있습니다.

  • 이름 (필수) : 세션 파일의 이름 설정
  • 프로토콜 (필수) : 접속할 방법(프로토콜) 선택
  • 호스트 (필수) : 접속할 호스트의 주소 입력
  • 포트 번호 (필수) : 접속할 호스트의 포트 번호 입력
  • 설명 : 세션에 대한 간단한 설명을 입력

[사용자 인증] 범주로 넘어가서 연결을 위한 사용자 인증 정보를 입력해줍니다.

참고: 연결 시 자동으로 사용자 인증을 진행하므로 이 항목을 비워두어도 좋습니다. 또한 보안상 암호는 저장하지 않는 것을 권장합니다.

  • 사용자 이름 : 접속할 호스트의 사용자 이름 입력
  • 암호 : 접속할 호스트의 암호 입력

일단 이렇게 하면 기본 연결을 위한 설정은 완료됩니다. 이제 창 하단에 있는 ‘확인’ 또는 ‘연결’ 버튼을 클릭합니다. (‘연결’을 클릭하면 세션 파일을 저장한 후 즉시 연결을 시도하게 됩니다.)

세션에 연결하면 먼저 호스트 키를 체크합니다. 현재 Xshell에 저장된 호스트 키가 없을 경우 아래와 같이 묻게 됩니다. 호스트 키는 접속하려는 서버가 올바른 행선지인지 확인하기 위한 과정입니다. 따라서 호스트 키의 손도장 해시값(MD5 Hash) 등의 정보를 확인하여 실제 서버와 비교해보는 것도 좋습니다.

이상이 없다면 ‘수락 및 저장’을 클릭하여 이후에 호스트 키가 변동될 때 까지 묻지 않도록 합니다.

이제 세션에 성공적으로 연결되었습니다.

마치며

이렇게 Xshell의 일반적인 기능들을 살펴보았습니다. 터미널 환경에서 작업을 진행해가면서 터널링, 포워딩, 터미널 하이라이트, 검색 기능과 같은 Xshell만의 다양한 기능을 사용할 수 있을 것입니다. 이러한 기능들은 추후 포스트에서 다루어보도록 하겠습니다.

프로그램에 조금씩 익숙해져가면서 유용한 기능과 많이 접해보셨으면 합니다. 읽어주셔서 감사합니다.

JooTC

안녕하세요. 테크놀로지에 관심이 많은 블로거입니다.

View Comments

  • 예전에 putty 사용하면서 다소 불편하다 생각했는데 조목조목 설명에 어려움없이 익히게 되어 감사드립니다.
    늘 선한의지에 거듭 감사드립니다.
    연식이 있고 얇은 지식에 개념이 서지않아 서버접근에 두렵습니다.
    도움을 부탁해도 될련지요.
    AWS EC2에 freetier서비스에 bitnami- wordpress Avada Theme를 설치하여 헤메이며 http://############.shop를 customization하고 있는데
    네이버에 사이트 등록를 할려니 EC2서버에 연결하면 bitnami@ip-172-31-36-xxx:~$ pwd -> /home/bitnami로 나옵니다.
    navercbd567fb20a93745b7e728###########.html의 파일내용:naver-site-verification: navercbd567fb20a93745b7e728###########.html를
    루트폴더에 옮기라고하는데.
    Q1. 내 컴퓨터의 다운로드에 위치한 위에 언급한 소유자 확인파일을 Xshell에서 EC2서버에 접근은 했는데
    어떻게 옮기는지요. MV 명령만 겨우압니다.
    Q2.로칼 세션에서 직접옮기는지요. 아님 EC2서버에서 파일명:파일내용이 짧으니 직접 작성하는 방법은 어떻게 하는지요.

    헤메이다 도움 요청합니다.
    남은 하루도 즐거이 보내시길....

    • 안녕하세요. 제 포스트를 읽어주셔서 감사드립니다.

      로컬상에 존재하는 파일을 서버로 옮기는 방법은 여러 방법이 존재합니다.
      Xshell에서는 서버 내에서 ZMODEM을 지원할 경우 Xshell에서 특정 폴더에 위치한 상태로 로컬 파일을 Xshell로 드래그하면 파일을 바로 전송할 수 있는 기능이 있습니다.
      만약 이 기능이 작동하지 않은 경우 서버가 ZMODEM을 사용할 수 없는 상태일 수 있으므로 설치할 수 있는 경우: lrzsz 패키지를 설치하거나, 설치할 수 없는 경우 다른 방법을 사용해야 합니다.

      FTP나 SFTP 프로토콜을 사용하여 파일을 전송하는 방법이 있는데요. SFTP의 경우 SSH 프로토콜과 동일한 포트를 사용하며 SSH 접속과 동일한 사용자 인증을 사용합니다.
      반대로 FTP는 별도의 설정이 필요합니다: https://jootc.com/p/20170214195

      파일이 짧아서 서버상에서 직접 작성하는 방법을 원하신다면 vim 에디터를 사용하거나 cat 명령어를 사용하는 방법이 있을 것 같습니다.
      cat의 경우:
      첫번째 방법은 echo '[작성할 텍스트]' >> [경로 및 파일명]
      두번째 방법은 cat > [파일명]
      이후 원하는대로 작성하고 Ctrl+D로 저장하여 빠져나옵니다.

      도움이 되셨길 바랍니다. (추가로 댓글에 민감한 부분이 있어 블라인드했습니다.)

Recent Posts

[iOS] Xcode ‘You do not have required contracts to perform an operation’ 해결

Xcode에서 iOS 애플리케이션을 빌드(Archive)하고 App Store Connect에 앱을 업로드하는 도중, 아래와 같은 에러가 발생하면서 더…

3주 ago

[안드로이드] INSTALL_FAILED_INSUFFICIENT_STORAGE 해결

INSTALL_FAILED_INSUFFICIENT_STORAGE 문제 안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서…

6개월 ago

Zalgo 텍스트와 이를 방지하는 방법

인터넷 커뮤니티 사이트에서 게시글이나 댓글에 간혹 장난을 목적으로 작성된 특이한 글자를 볼 수 있습니다. 위…

8개월 ago

리눅스 kill, killall 명령어 – 특정 프로세스 종료하기

리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…

8개월 ago

JavaScript typeof null이 ‘object’인 이유

JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…

8개월 ago

Mocha Error: Resolution method is overspecified. 해결 방법

NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…

8개월 ago