DB서버 외부에서 안전하게 접속하는 방법. DBeaver로 SSH 터널링 접속

2022/10/14 Update. 우분투 22.04 LTS 시대 기준 DBeaver 22.2.2버전에서는 암호화 알고리즘 ed25519을 사용할 때 SSH 터널 설정 화면 아래에 Advanced Setting -> Implementation를 SSHJ로 선택해야 한다.
그리고, Putty접속용의 .ppk파일이 아니라 오리지널 개인키를 써도 된다.

보통 유동 IP를 사용하는 집에서는 mysql/mariadb나 Postgresql 서버에 접속하기 위해서 외부 접속 설정을 모든 IP에 대해서 허용해야한다.
SSH 같은 경우는 공개키 접속 방식으로 개인키 파일이 털리지 않는한은 절대로 접속이 불가능하게 되지만, DB 서버의 경우는 아이디/패스워드가 전부이기 떄문에 외부 접속을 열어두기가 아무래도 꺼림칙하다.

그래서 공개키 접속을 사용한 SSH 터널링으로 DB 서버에 접속하면 훨씬 안전하게 접속 할 수 있는데, 이미 공개키 방식으로 SSH 접속을 하고 있다면 설정은 별로 어려울 것도 없다.
DBeaver 등의 SSH 터널링을 지원하는 DB 툴로
DB 접속 호스트는 localhost 를 지정하고
포트, 아이디/패스워드등 나머지는 그대로.

SSH 터널링 설정을 들어가서 DB 서버의 IP 주소, SSH 유저 아이디, SSH 인증 방식을 공개키 방식으로 하고 개인키 파일을 지정하면 끝.

문제 해결

ssh-keygen으로 생성한 파일을 넣으면 이런 에러가…

DBeaver에서는 개인키 파일을 ssh-keygen으로 만든걸 썼더니 에러를 뿜어서 Putty 접속용으로 변환된 .ppk 파일을 등록하니 잘 접속 된다.
접속이 안되서 또 애꿋은 방화벽 탓을 하다가 발견… 메시지가 방화벽과 전혀 관계가 없는데도 방화벽 탓을 하게 된다.

그리고, 마지막으로.
SSH 터널링으로 접속이 잘 될 경우에는 잊지 말고 반드시 DB의 외부 접속 허용 설정을 끌 것.

ssh 공개키/개인키 접속하는 방법 참고 https://storycompiler.tistory.com/112

Postgresql 12 버젼을 우분투 18.04 에 설치 설정

Postgresql 12 설치

참고 : Postgresql의 우분투용 설치 가이드

아래 명령으로 /etc/apt/sources.list.d 디렉토리에 pgdg.list 파일을 만들어 Postgresql 저장소를 추가한다.

우분투 버전이 18.04가 아닐 경우에는 ‘bionic’ 을 해당 우분투 버전이름으로 변경할것.

우분투 버전별 이름 (Postgresql 저장소에 존재하는 것만)
12.04 LTS precise
14.04 LTS trusty
16.04 LTS xenial
18.04 bionic
18.10 cosmic
19.04 disco
19.10 eoan

저장소 인증키를 추가

apt update / Postgres-12를 인스톨

유저 추가

아래 커맨드 중 elmitash 부분을 사용하고 싶은 아이디로 바꿀것.
postgres 유저로 바꾼 후, 새로운 유저를 추가
패스워드를 두번 입력

y를 입력해 관리자 권한을 준다

접속 테스트

외부 접속

postgresql.conf 파일을 수정

아래 부분을 찾아 주석 해제하고 localhost 를 * 로 바꾼다. 특정 IP에서만 접속할 경우엔 IP 주소를 쓰면 된다.

pg_hba.conf 파일을 수정

접속 인증을 할 IP 범위를 설정하기 위해서 아래 내용을 추가한다. 내부 네트웍일 경우 아래 내용에서 아이피 정도만 바꾸면 될듯.

설정을 마쳤으면 Postgresql 서비스 재시작

문제 해결

이놈의 방화벽… 진짜…
iptables 의 경우 숫자 6은 sudo iptables -L 로 확인해서 수정할 것.

ufw 의 경우는 간단.

오라클 클라우드는 인스턴스의 보안 목록에 수신 규칙을 추가해야한다. TCP의 5432번 포트를 개방.

관련 글: DB서버 외부에서 안전하게 접속하는 방법. DBeaver로 SSH 터널링 접속

오라클 클라우드 무료 유료 인스턴스 속도 테스트

프리티어는 무료니까 그렇다치고 그럼 유료는 얼마나 빠를까하는 궁금증이 생겼다.
체험 30일동안 3.3만엔의 크레딧을 주는데 거의 쓰지도 못해서 잔뜩 남았고 해서 만들 수 있는 제일 비싼 인스턴스로 만들어 봤다.

VM.Standard.E2.2는 16기가 메모리에 최고 속도는 초당 메가바이트로 환산하면 175MB/s 의 놀라운 속도!

인스턴스 생성 후에 콘솔 접속해서 버릇처럼 apt update, apt upgrade… 속도가 다르구만.
speedtest-cli 설치해서 실행!

결과는…

쿠궁…
다운로드는 초당 15MB/s 에 업로드는… 똑같잖아? 초당 500KB/s 수준.
업로드 속도는 프리티어에서 무료로 쓸수 있는 VM.Standard.E2.1.Micro 와 같은 속도다.

뭐 상용으로 쓰는데 이런 속도일리는 없고 결론은 그냥 무료체험에서 사용할 수 있는 인스턴스들은 다 속도 제한을 걸어뒀다…가 맞겠지.
아무리 그래도 500KB/s 는 너무한것 같은데… ㅠㅠ

그래도 공짜니까… 그냥 쓰는거다.

번외로 한달에 4.5만원쯤 내는 우리집 VDSL 속도…
윈도우10에 설치한 우분투에서 해 봤다.

다운로드 7.25MB/s, 업로드 476KB/s
그냥 다 비슷비슷한거 같다. 업로드 속도는 다 같은 수준이고.

관련글: 오라클 클라우드 프리티어 사용기
오라클 클라우드 프리티어로 이사

오라클 클라우드 프리티어 사용기

한국이나 일본이나 아직 오라클 클라우드 프리티어는 정보가 많지 않아서 직접 써 본다.
기준은 서울 리전

무료 인스턴스 생성이 안됨

이것 때문에 쓰기도 전부터 꽤 고생했는데 인스턴스를 생성하려고 하면 out of host capacity 라는 에러 메시지(지금은 다른 메시지로 바뀜)로 생성이 안된다.
무료인 경우에 총 생성량이 제한 되어있어서 그렇다는데 문제는 꽤 오랫동안 이런 상태가 유지 된다는 것.
나는 매일 시도해서 8일(2020/02/18-2020/02/26간 시도)만에 인스턴스가 생성 되었다.
생성한건 오전이었는데 그날 오후 7시 정도까지는 생성이 되었으니 인스턴스 생성이 안될 때는 하루 한두번 오전 오후 시도해 보면 될듯하다.

네트워크 속도가 느림 특히 업로드는 최악


평일 오전 10시경 speedtest 로 체크.
다운로드가 49.65Mbit/s, 업로드가 4.06Mbit/s로 메가바이트/초로 환산하면 다운로드 6.2M, 업로드 500K라는 속도가 나온다. 우리집 VDSL속도랑 똑같아서 소름.
프리티어의 아웃바운드 트래픽 제한이 월 10테라인데 저 속도로 한달 내내 업로드 대역폭을 다 써도 13%정도 밖에 못 쓴다.
실질적으로 아웃바운드 제한 1테라라고 봐도 되는데 문제는 그냥 느리다는거. 제한을 1테라로 두고 업로드 속도가 제대로 나오는게 낫지.

윈도우에서 공개키, 개인키 생성 방법

인스턴스를 생성할때는 SSH 접속에 사용할 공개키를 넣어야 한다.
무설치판 git 클라이언트 -> https://git-scm.com/download/win
설치해서 공개기/개인키 만드는게 제일 쉬운 방법인듯.

VPN으로 넷플릭스

서울 리전에서 만든 이유는 블로그 속도 문제도 있지만 VPN으로 한국판 넷플릭스를 볼 수 있을까하는 이유도 있었는데 결과는 꽝.
속도가 너무 느려서 정상적으로 뭔가 볼 수는 없었다. 어떤것들이 있나 구경만 잔뜩 했는데 확실히 일본 넷플릭스보다는 한국쪽이 볼만한건 많은듯 했다.

프리티어 사용해 본 느낌

그래도 VPS 두대에 각 50기가 용량, 트래픽 걱정도 없고, CPU와 램도 좋은 편이라 홈서버에서 블로그 돌리던 때에 비하면 많이 좋다.
전기세는 일단 안들고 말이지.
다른 블로그에서 확인하기에 저 업로드 속도는 예전에는 안그랬던거 같은데 조금은 좀 올려줬으면 좋겠네.
평생 무료라고 광고 했으니 5년 정도는 서비스를 유지했으면 좋겠는데 오라클 사정이 어떨지 좀 걱정이 되긴 한다.

어쨋은 공짜에 여러 나라에 리전이 있으니, 한국에서라면 일본에 리전 만들어서 VPN용으로써도 좋을듯. 속도는 느리니까 웹서핑 정도 밖에 못하겠지만.

오라클 클라우드 프리티어

오라클 클라우드 프리티어로 이사

블로그를 한동안 방치하고 있었는데 서버를 오라클 클라우드 프리티어(https://www.oracle.com/kr/cloud/free/)로 이사했다.
무료로 두개까지 가상서버를 사용할 수 있으니 관심 있는 분들은 찾아 보라.
서버 위치로 서울 리전으로 했으니 저번보다는 좀 빨라지려나.
근데 이거 업로드 속도가 처참해서 그렇게 기대는 못하겠는데…

이사하면서 HTTPS 대응도 하고, 도메인도 만료 된거 그냥 죽였는데, 다른 도메인으로 새로 구입했다.
일본에 오나마에 쓰고 있었는데 도메인 만료 전에 도메인 갱신하라고 메일을 얼마나 보내는지 아주 질리도록 보내더라.
만료 후에도 다시 살릴 수 있는 기간동안엔 살리라고 메일이 또 오고.
질려서 구글 도메인에서 page 도메인을 구입했다. (제일 싼거)
가격도 가격인데 이름 선택권이 닷컴보다는 여유로워서 좋은 듯하다.

오라클 클라우드 팁 하나 던지자면 이걸 몰라서 엄청 고생했는데,
HTTP나 HTTPS나 포트를 열때 오라클 클라우드 설정 화면에서 가상 클라우드 네트워크 – 보안목록(security list) – 수신 규칙에서 포트 지정하는건 알겠는데 아무리 해도 접속이 안되더라.
나 같은 경우는 가상서버 OS는 우분투 서버 18.04를 선택했는데 다른 리눅스계열은 다 비슷할듯한데, 포트 열어도 접속이 안될때는 서버에 접속해서 iptables 꼭 확인해 보자.
ufw 설치해서 거기서 포트를 열어도 iptables 에 미리 정의된 내용이 있어서 ufw 건드려도 아무것도 안되더라.
iptables 에 직접 포트 열도록 설정해 주니 바로 되서 좀 어이가 없었다.
그냥 내가 멍청한 탓이지…
근데 ufw 깔면 iptables 안봐도 되는줄 알았어…

버려둔거 다시 살렸으니 종종 글을 올려봐야겠다.
일단 오늘은 이정도로.