회사에서는 aws를 통해 서비스를 배포 운영하고 있는데, 실제 서비스들은 외부에서 접근이 불가능한 private subnet에 위치해있다. 그리고 외부에서 이 서비스를 접근하기 위해서 반드시 거쳐가야 하는 일종의 게이트웨이 역할을 하는 서버가 있는데 바로 베스천 서버이다. 베스천 서버는 public subnet에 위치하며, 여러 보안적인 이슈를 담당한다. 특정 IP만 특정 subnet에 접근가능하도록 강제를 하거나, 서버 접근 이력 정보를 남기는 등 보안적으로 많은 이점이 있다. 베스천 서버를 통해 실제 서버로 접속을 하려면 ssh 터널링을 통해 로컬 호스트에 포트를 띄우고 해당 포트로 접근을 해야했다. ssh -fnNT -L ::22 @ -i 위와 같이 타겟 서버에 맞게 입력을 해보면 아래와 같이 성공..
난 까만 터미널 화면을 좋아한다. 심리적으로 안정감을 느끼는데 왠지 모르겠다 ㅋㅋ;; IDE도 모두 High Contrast Mode로 쓰고 있어서 아무래도 나는 검은 화면에 하얀 텍스트가 뜨는 걸 좋아하나 보다. 터미널 작업을 자주 하다 보면 에디터 프로그램을 사용하게 되는데 나는 주로 Vim을 사용한다. Vim으로 텍스트를 작성하다가 특정 줄을 포함해서 복사해야 할 일이 생겼다. 기존에 한 줄 복사 붙여 넣기는 대상 줄에 커서를 옮기고, y 누르고 붙여놓을 곳에 p 누르면 됐었는데 , 여러 줄은 어떻게 해야 할지 Vim 초보라서 고민이었다. 해결방법은! 비주얼 모드로 복사할 라인을 감싸고, 복사를 하면 된다. 가장 먼저 v를 눌러 비주얼 모드를 킨다. 그러면 Vim 하단에 Visua이란 문구가 뜨게 ..
회사 서비스 특성상 B2B 고객이 많고 대부분 고객들이 폐쇄망을 구축하고 있는 경우가 많다. 원래 출장을 잘 가지 않지만, 고객사 인사 시스템과 회사 서비스 간의 SSO 연동 요구건이 발생해서 출장을 가게 되었다 내가 인증 서버와 계정 서버 및 라이선스 서버를 개발하고 관리하고 있어서 출장이 불가피했었는데 너무 슬펐다... 개인적으로는 윈도우 서버 보단 리눅스 서버를 더 잘 알고 다룰 줄 알고 있는데, 출장 가서 환경을 보니 윈도유 서버 환경이었다. 폐쇄망에 위치한 특정 서버에 요청을 날려보고 응답 데이터를 확인해봐야 하는데, 리눅스의 경우 Curl 명령어를 사용할 텐데 윈도우 파워쉘에서는 뭘 써야 할지 몰라서 막막했었다. 구글링 해보니 파워셀에서는 Invoke-WebRequest 명령어를 사용한다고 한..
나는 터미널에서 명령어를 작성하거나, 특정 작업을 할 때 커서 이동을 위해서 Ctrl + 방향키 (Left or Right)를 눌러서 이동하는 경우가 있다. Ctrl + 방향키(Left or Right)로 이동을 하면 커서가 블록단위로 이동되기 때문에 빠르게 커서를 이동할 수 있는 장점이 있었다. 최근에 터미널을 zsh + oh-my-zsh + starship 조합에서 zsh + powerlevel10k 로 변경을 변경했는데 Ctrl + 방향키(Left or Right) 가 먹히지 않고 다음과 같이 출력되는 문제가 있었다. 특수문자로만 찍히고, 커서 이동이 하나도 되지 않았고, 커서를 한 글자 단위로 이동시키려니 답답하고 암 걸릴 것 같았다. 그래서 방법을 찾았는데, 다음과 같은 구문을 본인의 .bash..
AWS에 있는 EC2 인스턴스나, 다른 서버에 인증서 키 파일을 통해 SSH 접근을 하는 경우 아주~ 가끔 아래와 같은 에러를 만나볼 수 있다. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Permissions 0755 for './{key_name}' are too open. It is required that your private key files are NOT accessible by others. This private key will be ignore..
회사에서 개발을 하다가, 특정 서버가 유레카 서버에 잘못 등록된 걸 알게 되었다. 현재 유레카 서버에는 각 서비스들이 Docker Container IP로 등록되고 있어, 서비스 명과 Docker IP 정보로만 대상 서버를 찾아야 했다. 문제는 개발서버에 컨테이너가 40개 넘게 돌고 있었고, docker inspect로 서비스 명을 입력해서 일일이 찾기 너무 귀찮았다. 그래서 모든 구동 중인 컨테이너 서비스의 이름과 docker ip를 출력하는 간단한 스크립트를 짜 봤다. docker ps -q | xargs -n 1 docker inspect --format 'CONTAINER_NAME: {{ .Name }} ---> {{range .NetworkSettings.Networks}}{{.IPAddress..
가끔 SSL 인증서가 잘 발급되었는지, 어디서 발급되었고, 어느 사이트를 대상으로 발급되었는지 확인해야 하는 경우가 발생할 수도(?) 있다. 사실 나는 사설 SSL 인증서를 만들고 개발 서버를 운영하고 있었는데 IOS Safari에서 Websocket 연결 시 SSL CA 인증 에러가 났다고 전달받아서 확인해본 케이스이다. openssl을 통해 인증서 내용을 확인하는 명령어는 다음과 같다. echo | openssl s_client -connect 한번 네이버가 사용하고 있는 ssl 정보는 어떤지 확인해보자. 내용이 엄청 나오는데, 확인하고 싶은 내용은 grep 명령어를 통해 잘 확인해보자. 나는 첫번째로 해당 ssl이 어느 사이트를 대상으로 발급되었는지 확인해보고 싶었다. 이런 경우 subject를 확..
현재 내가 일하고 있는 회사의 서버팀에서는 Spring Boot 기반으로 모든 API 서버를 만들며 (목적에 따라 Node 또는 Go, C++로 작성된 서버도 있다.) Docker를 이용하여 애플리케이션을 배포하고 있다. Spring Boot 프로젝트를 어떻게 Docker Image로 만드는지 간단하게 예시와 설명을 해보겠다. 1) spring boot 프로젝트 만들기 우선 간단하게 Spring Boot 프로젝트를 만들어보자. spring boot 2.3.4 기반의 gradle 프로젝트이며, build.gradle에 사용된 라이브러리는 다음과 같다. plugins { id 'org.springframework.boot' version '2.3.4.RELEASE' id 'io.spring.dependenc..