삽질메모장

노트북을 리눅스 서버로 사용하기 - 2(서버 os 설치부터 외부 ssh접속툴, mariaDB 세팅까지) 본문

OS/Ubuntu

노트북을 리눅스 서버로 사용하기 - 2(서버 os 설치부터 외부 ssh접속툴, mariaDB 세팅까지)

shovel 2023. 12. 11. 20:11

포트포워딩 (iptime기준)


보통 회사에서는 방화벽장비와 해당 장비의 설정을 위한 웹 UI 형태가 제공되겠지만 개인 서버는 보통 저처럼 집의 공유기를 세팅하여 사용할 것이다.

1. 192.168.0.1 으로 접속하여 로그인 한다. 초기값은 보통 admin/admin 이다

2. 로그인을 했다면 고급 설정> NAT/라우터 관리 > 포트포워드 설정 으로 이동한다.

제 경우 이미 ssh, mariaDB 의 포트포워딩이 설정되어 있다.

해당 포트포워딩이 필요한 이유는 외부접속을 위해서다. 서비스하게될 웹, 모바일등 어플리케이션의 포트만 포트포워딩을하고 사실 DB같은경우 내부로만 엑세스가 가능하도록 하는것이 보안상 훌룡하지만 카페나 외부에서 작업시 HeidiSql 같은 툴로 직접접속해 개발하면 훨씬 편해서 이와같이 설정했다.

 

규칙은 내부 IP 주소에 우분투 서버 OS가 설치된 내부 IP와 각각의 서비스 포트를 설정해주면 된다

 

3. 포트포워딩을 했다면 서버의openssh, mariaDB 의 외부접속또한 설정해 주어야한다.

 

-ssh 이전에 포트포워딩시 openSSH : 9022 포트로 설정했으므로

터미널에서 /etc/ssh/sshd_config 파일을 아래와 같이 Port 9022 문장을 추가후 저장해준다

그리고 저장된 사항을 반영하기위해 systemctl restart ssh.service 를 실행해준다.

 

4. 자 그럼 서버 pc의 터미널를 직접 사용하는게 아닌 외부에서 접속 테스트를 해본다

윈도우에서 CMD를 실행하고 명령어 ssh host@공인IP -p 설정한포트 로 입력한다 (ex- ssh sangho@1.123.123.123 -p 9022)

접속이 됐다면 아래와같이 continue connecting을 묻는다 yes입력 엔터

비밀번호입력을 요구한다 입력후 엔터, 맞다면 아래와같이 자신의 서버 내부 ip를 포함한 기본정보와 함께 접속된다.

 

5. 하지만 매번 cmd로 접속하는것은 귀찮다 그래서 과거에는 putty + SCP 조합으로 사용했지만 이제는 MobaXterm이라는 굉장히 편하고 기능많고 무료로 사용가능한 툴이 있다.  https://mobaxterm.mobatek.net/download.html

 

MobaXterm free Xserver and tabbed SSH client for Windows

The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more!

mobaxterm.mobatek.net

 

무료인 home Edition을 다운받아주고 별도 설정없이 스탭을 따라 설치한다. 그리고 프로그램 실행을 해준다

순서대로 좌측상단의 Session > SSH > Remote Host: 자신의 공인 IP > Specify username 체크, 서버의 관리자 ID> 설절한 SSH Port 값을 입력한뒤 OK.

 

 

6. 접속 완료, 이제 서버 노트북이 아닌 외부에서 접속이 가능한 환경이 만들어졌다. 이제 mariaDB 를 인스톨하고 외부접속을 해본다.

-설치

(1) sudo apt install mariadb-server

(2) sudo apt install mariadb-client

root 비밀번호 설정등 기본사항을 묻는것에 모두 작성, 응한뒤 재시작을 한다

(3) sudo systemctl restart mysql

 

7. 그리고 포트포워딩시 설정한 port 로 설정한다.

(1) cd /etc/mysql

(2) vi  mariadb.cnf

port = 자신이설정한 포트 를 추가후 :wq

 

cd /etc/mysql/mariadb.conf.d 로 이동

vi 50-server.cnf

기존의 루프백(로컬 허용)세팅인  bind-address = 127.0.0.1 는 주석하거나 삭제후 아래와같은 옵션으로 변경해준다.

bind-address =0.0.0.0 (모든접속 허용)
bind-address =1.123.234.1 (특정 ip 허용)
bind-address =1.123.234.% (특정 ip 대역 허용)

 

 

 

 

이제 세팅값은 완료했으므로 서비스 재시작을 해준다.

 

8. mariaDB 계정 또한 외부접속 세팅이 필요하다.

root 계정은 내부접속만 가능하도록 놔두고 권한을 나누어 외부접속이 가능하도록 세팅하는것이 현명하지만 지금은 설명을 위해 root 계정으로 접속한다.

1) mariaDB접속 : mysql -u root -p 
2) use mysql
3) GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY {password}
 -> root 계정의 모든 호스트접속에 대해 허용한다.
 -> 보통은 별도의 계정을 생성하여 프로젝트 단위의 DB마다 권한을 부여하고 CRUD 권한도 나누는것을 추천한다.

 

 

9. 툴을 이용하여 외부 접속 테스트를 한다.

이또한 윈도우 CMD로 접속이 가능하지만 매~우 불편하므로 자주 사용하는 HeidiSQL을 먼저 설치해준다. 툴은 무엇을 사용하든 상관없다. https://www.heidisql.com/download.php

 

Download HeidiSQL

Download HeidiSQL 12.6, released on 05 Nov 2023 Please disable your adblocker and reload the page to enable HeidiSQL downloads. Or, if you can't overcome the temptation, rightclick the anchor and click "copy link" to get it. Compatibility notes HeidiSQL ru

www.heidisql.com

1: 자신의 공인 IP

2: 계정은 따로 생성 안했으므로 root

3: root 계정의 암호

4: 설정한 포트

 

접속되면 아래와 같이 sql 에디터가 나온다.

 

 

여기까지 정말 기본적인 OS, SSH, DB 설치와 설정, 툴을 세팅해 보앗다.

예를들어 자신이 Spring 프로젝트를 진행하여 해당 서버를 통해 배포를 하고싶다면 java, nginx, docker, 인증서 세팅 등등 여러 설정을 해야한다. 

그래서 차후 개인 프로젝트가 어느정도 프로토타입이 나오면 이 과정을 다시 정리 해볼 것이다.