Ubuntu Server에 SSH 서버를 구축하고 접속하기 위한 설정 방법을 알아본다. 추가적으로 SSH 설정에 따른 XRDP, VNC 에러를 해결할 수 있는 추가 설정방법을 제시한다.
- (option) 공유기로 접속시,
포트 포워드(Port Forward)
셋팅SSH
서버 구축하는 방법
SSH
서버 구축SSH
접속을 위한 port 할당SSH
설정에 따른XRDP
,VNC
추가 설정방법
개발 환경에 따라서, 1개의 외부 IP(고정 IP)에 공유기를 통해 여러대의 컴퓨터를 연결할 수 있다. 이러한 접속 문제를 해결하기 위해 필요한 것이 공유기의 Port fowarding
(포트 포워딩) 설정이다.
포트 포워딩
이란?외부 IP
로 접속할 때, 특정 포트로 외부에서의 접속을 할 경우 내부 IP
에 할당해주는 옵션을 의미함.공유기에서 할당한 192.168.0.13
이라는 주소는 공유기 내의 주소
이기 때문에, 같은 공유기 망 내에서만 접속이 가능하다. 그렇기 때문에, LTE 망을 사용 중인 핸드폰이나, 공유기에서 나온 와이파이망을 사용하지 않는 일반 컴퓨터에서는 192.168.0.13
이라는 주소를 쳐봤자 접속이 불가능하다.
비유하자면 192.168.0.13
은 2북 480C호
라고만 쓰여있는 주소와 같다. 같은 아파트 단지에 살고 있다면 2북 480C호
라는 주소만으로도 충분히 찾아갈 수 있으나, 택배를 받으면서 주소란에 2북 480C호
에 써두면 받을 수 없다.
그렇다면, 외부에서 내부 컴퓨터로 접속하기 위해서는 어떻게 해야할까? 공유기를 사용하여 외부 IP(고정 IP)
에서 내부 IP
로 접근할 수 있는 Port
를 열어주고, 해당 주소를 사용하는 것이다.
자세한 공유기 설정을 통한 Port Fowarding
방법은 공유기 제조사마다 다르므로, 아이피타임(ipTIME
)기준으로 설명이 잘 나와 있는 블로그 글을 공유한다. 참고해서 아래와 같이 내부 IP 접속을 위한 port
를 할당해주면 된다
10022
port를 활용해서 SSH 접속을 할 예정이다.default port
는 22
port이지만, 보안상의 이유로 임의로 바꿔주는 것이 좋다.22 port
로 접속하려 들테니깐??10022
는 임의로 지정한 port
이다. 겹치지만 않는다면, 본인이 원하는 아무 port
를 개방해도 상관이 없다. xrdp
는 3389
port를 사용한다.ssh
는 Secure Shell
의 약자로, 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행할 수 있도록 해주는 프로토콜을 말한다. 이 챕터에서는 우분투에서 SSH
를 이용해 서버를 구축한 뒤, SSH Client
를 통해 다른 컴퓨터에서 해당 SSH Server
에 접속하는 방법에 대해 알아보려 한다. 덤으로, ssh
접속을 위한 Port
를 변경하는 방법도 알아본다.
Ubuntu
에서 SSH Server
를 이용하기 위해서는 먼저 ssh
가 설치되어 있어야 한다. 설치방법은 아래와 같다.
>>> sudo apt-get install ssh
그렇면 설치가 완료 될 것이다.
SSH service
를 시작하기 위해서는 관리자 권한인 root로 로그인이 가능하게 설정되어 있어야 한다. root로 로그인 설정이 되어있는 상태라면 아래와 같이 SSH service
를 시작할 수 있을 것이다.
>>> sudo service ssh start
다음의 명령을 통해서 서비스 중인 SSH 서버의 상태를 확인할 수 있다.
>>> service ssh status
또한 실행중인 서버의 IP 주소 및 포트 번호를 확인할 수 있다.
>>> sudo netstat -ntlp |grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 14421/sshd
tcp6 0 0 :::22 :::* LISTEN 14421/sshd
위의 결과는 22
port를 통하여 SSH 접속이 이루어지고 있음을 보여주고 있다.
ssh
로 접속하는 포트를 변경하기 위해서는 sshd_config
파일을 수정해야 한다. 아래에서는 sshd_config
파일을 수정하여 앞선 공유기 설정에서 Port fowarding
으로 열어둔 10022
으로 ssh 접속
을 할 수 있도록 설정한다.
>>> sudo gedit /etc/ssh/sshd_config
sshd_config
파일에서 Port
의 주석을 해제하고 10022
으로 수정
# $OpenBSD: sshd_config,v 1.101 2017/03/14 07:19:07 djm Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
Port 10022 ## <---- 이 부분의 주석을 해제하고 10022로 수정
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
이후에 SSH 서비스를 재시작하면 된다.
>>> service sshd restart
외부에서 단순히 SSH 접속을 하는 것은 어렵지 않다.
ssh (user)@(public DNS) -p [port 번호]
>>> ssh kass@192.168.0.13 -p 10022
SSH 접속 시, 1) 내부 IP끼리 접속
인지, 2) 외부에서 내부 IP로 접속
인지에 따라서 접근 방법이 다르다.
(단, User ID는 kass
라고 가정하며, 내부 IP는 192.168.0.13
, 외부 IP(=고정 IP
)는 72.243.14.15
으로 가정한다.)
(user)@(public DNS):[port 번호]
=내부 IP끼리
)에서 접속할 경우, kass@192.168.0.13:10022
으로 접속kass@72.243.14.15:10022
으로 접속SSH 보안 프로토콜
추가 설정에 따라서, 기존에 잘만 접속되던 GUI 원격 접속 Tool인 XRDP
, VNC
등으로 접속이 안되는 현상을 확인하였다.
해결책은 간단하다.
>>> sudo gedit /etc/xrdp/xrdp.ini
위와 같은 파일을 열고, 아래의 한 문장을 추가해주면 된다.
address=0.0.0.0
위와 같은 한 줄을 추가한 후에, 아래와 같은 step을 진행하면 된다.
xrdp
port(3389
) 재할당 xrdp
및 ssh
재시작>>> sudo ufw allow 3389
>>> sudo service xrdp restart
>>> sudo service ssh restart
>>> 컴퓨터 다시 시작
사실, ubuntu
를 처음 깔고나서 원격 접속
을 위해서 구글링을 해보면, 상당히 복잡한 과정을 거쳐서 설치해야 한다. 그렇지만, 이 귀찮은 과정을 자동화 해주는 개꿀같은 프로그램을 누군가가 개발하였다.
https://www.c-nergy.be/products.html
사용법은 홈페이지에 잘 나와있다.
https://c-nergy.be/blog/?p=16817
개발자에게 존경을 표한다....
(참고 링크)