Ubuntu sshd 서버 환경 구축

SSH (Sechure Shell, 시큐어 쉘)은 네트워크 상에 존재하는 다른 서버 또는 컴퓨터에 원격으로 접속하여 Shell(쉘) 환경에서 명령을 실행할 수 있게 하는 프로그램 또는 프로토콜을 말한다. SSH는 기존의 rsh, rlogin, telnet등을 대체하여 보안상 안전한 네트워크 통신을 할 수 있도록 한다. 이 글에서는 원격에서 SSH 접속을 할 수 있도록 sshd 서버 환경을 구축하는 방법에 대해 알아본다.

Ubuntu sshd 서버 설치

아래와 같이 openssh-server 패키지를 설치한다.

$ sudo apt update
$ sudo apt install openssh-server -y

Ubuntu sshd 설정

openssh-server를 설치 했으면 sshd 설정을 한다.

SSH 포트 설정

아래화 같이 포트를 확인한다. Port 22는 SSH 기본 포트로 잘 알려져 있기 때문에 바꿔주는 것이 보안상 좋다.

$ cat /etc/ssh/sshd_config| grep Port
#Port 22
#GatewayPorts no

따라서, 로컬 개발 환경이 아니고 외부에 노출되는 서버 설정을 하는 중이라면 이 값을 임의의 값으로 바꿔주는 것이 좋다. 바꾸는 방법은 #Port 앞에 있는 주석(“#“)을 지우고 바꾸려는 포트번호를 적어준다. 아래는 포트번호를 10022로 바꾼 예이다.

$ cat /etc/ssh/sshd_config| grep Port
Port 10022
#GatewayPorts no

만약 virtualbox 환경에서 NAT로 연결해서 사용중이라면, virtualbox NAT 포트포워드 설정에서 바꾼 포트번호로 바꿔준다.

SSH 포트번호를 10022로 바꿨을 경우를 위 예처럼 포트포워딩이 10022로 요청 될 수 있도록 게스트 포트를 10022로 바꿔준다.

virtualbox 우분투 NAT 설정은 아래 글을 참고하면 된다.

버추얼박스(VirtualBox) 우분투(Ubuntu) NAT 네트워크 설정

SSH root 계정 로그인 제한 설정

root 계정은 모든 권한을 가지고 있으므로, SSH 접속 시 root 계정은 로그인을 제한하도록 하는 것이 보안에 좋다.

$ cat /etc/ssh/sshd_config| grep PermitRootLogin
#PermitRootLogin prohibit-password
# the setting of "PermitRootLogin without-password".

아래와 같이 “PermitRootLogin no” 가 되도록 수정한다.

$ cat /etc/ssh/sshd_config| grep PermitRootLogin
PermitRootLogin no
# the setting of "PermitRootLogin without-password".

SSH 접속 허용할 그룹/유저 설정

SSH 접속을 특정 그룹이나 유저로 제한하려고 한다면, 아래와 같이 AllowGroups 또는 AllowUsers 를 추가한다.

$ cat /etc/ssh/sshd_config| grep AllowUsers
AllowUsers vboxuser

SSH 재시작

바뀐 설정으로 sshd 서버를 재시작 한다.

$ sudo systemctl restart sshd

SSH 접속

putty(https://www.putty.org/)를 설치하고 sshd 서버에 접속해 보도록 한다.

Host Name에 IP주소를 입력하고 Port에 설정한 포트번호를 입력하고, Open을 클릭하여 접속 되는지 확인한다.

AllowUsers로 접속을 허용한 vboxuser 계정으로 로그인 해본다.

참고

답글 남기기