MAC에서 비밀번호 없이 ssh 접속하기(config)

최근 맥북을 수리하면서 공개키(id_rsa.pub), 개인키(id_rsa) 그리고 호스트 정보가 있는 config 파일을 백업하지 않아 재설정하였다. 기록하기 위해 정리하는 것이지만 필요한 내용은 비밀번호 없이 ssh 접속을 위해 호스트 정보를 기록해두는 config 파일이다.

ssh 원격 접속

-> ssh user@host(domain|ip_address) -i identity_file

user : 원격 서버의 계정
host : 도메인이나 IP주소 (예 : 128.XXX.XX.XX, kimkevin.net)
-i : 개인키 파일 경로

원격 서버 ssh 접속시 인증에 사용할 개인키와 로그인 계정을 포함하는 기본적인 명령어이다.

비밀번호로 로그인

-> ssh dev@kimkevin.net
dev@kimkevin.net’s password:
...
Last login: Sat Jun 27 03:05:25 2020 from 210.94.83.207
dev@kevin:~$

비밀번호 없이 user@host로 로그인

vi ~/.ssh/authorized_key

ssh-rsa ..............................................................
......................................................................
......................................................................

서버의 ssh 폴더 안에 authorized_key 파일을 생성하고 공개키를 등록하자.

-> ssh dev@kimkevin.net
...
Last login: Sat Jun 27 03:05:25 2020 from 210.94.83.207
dev@kevin:~$

서버에 클라이언트의 공개키를 등록해두면 비밀번호 없이 로그인이 가능하다.

-> ssh dev@kimkevin.net -i ~/.ssh/another_id_rsa
...
Last login: Sat Jun 27 03:05:25 2020 from 210.94.83.207
dev@kevin:~$

만약 서버마다 다른키로 접속한다면 -i 옵션을 사용해 개인키 경로를 전달하면 된다.

호스트 이름으로 쉽게 로그인

-> ssh dev
...
Last login: Sat Jun 27 03:05:25 2020 from 210.94.83.207
dev@kevin:~$

계정과 호스트 정보 없이 자신이 정의한 호스트 이름으로 쉽게 로그인이 가능하다.

-> vi ~/.ssh/config

Host kevin
    HostName kimkevin.net
    User dev
    IdentityFile ~/.ssh/id_rsa

config파일을 생성하고 chmod 440 ~/.ssh/config 다음처럼 read권한만 주도록 하자.

-> ssh kevin
...
Last login: Sat Jun 27 03:05:25 2020 from 210.94.83.207
dev@kevin:~$

접속하는 원격서버가 여러개라면 호스트 각각 등록해두고 사용하면 더욱 편리하게 ssh 접속이 가능하다.

서로 다른 노트북에서 ‘ONE’ 프로젝트 작업하기

New MacBook Pro

백팩에서 벗어나자

많은 개발자분 들이 무거운 15인치 노트북을 백팩에 넣고 회사에 출근하거나 세미나에 참석한다. 나도 13인치를 3년 정도 들고 다녔지만 무거운 건 마찬가지다. 새로운 모델이 나올 때마다 무게를 줄어들고 있지만 출퇴근길 백팩은 무겁다. 그래서 결국 얼마 전에 개인 노트북으로 맥북을 구매했다. 이제는 더운 여름날 저녁에 약속이 있더라도 무거운 가방과 등 사이의 땀으로 찝찝하지 않을 수 있다니 삶의 질이 향상되었다.

이제 두 장소에서 서로 다른 맥북을 사용하고 있다. 그럼 외부에서 작업하던 안드로이드 프로젝트(stage에 있는 작업 중인 코드)를 어떻게 그대로 집에서 다른 맥북으로 이어서 작업할 수 있을까?

Cloud Storage Service

iCould Drive

처음 사용해본 Cloud 서비스는 iCloud Drive였다. iCloud의 경우, 사진을 백업하기 위해서 자주 사용하긴 했는데 프로젝트를 동기화해보는 건 처음이다.

iCould Drive Billing (가격)

iCloud Drive Billing

요금의 경우, 무료로 5GB가 기본으로 제공되고, 50GB를 사용할 경우 한 달에 약 $1만 결제하고 저렴하게 사용할 수 있다.

iCloud Drive Sync

먼저 iCloud 계정으로 로그인을 한 다음에 iCloud Drive 폴더에 간단히 프로젝트를 옮겨주면 된다. 다른 맥북에서 같은 계정으로 로그인하면 iCloud Drive에 프로젝트가 동기화되면서 자동 생성한다. 만약 외부에서 작업하고 동기화가 완료되면 개인 맥북으로 프로젝트가 정상적으로 동기화가 된다.

하지만 사용하면서 아쉬웠던 점은 동기화할 때 시계 모양의 진행 상태가 표시되지만 현재 동기화 중인 파일을 파악하기가 어렵다. 다른 개발자 분들은 두 개의 맥북에서 어떻게 프로젝트를 진행하고 있는지 물어보고 알게 된 서비스는 DropboxUnison이다. 현재는 Dropbox를 사용하고 있지만, Unison의 경우, OSX, Unix, Windows에서 다른 호스트에 저장된 파일이나 폴더를 공유할 수 있다.

Unison is a file-synchronization tool for OSX, Unix, and Windows. It allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other.

Dropbox

Dropbox와 git의 검색을 하면 Dropbox를 Private Github처럼 사용할 수 있는 방법들을 쉽게 찾을 수 있다. 만약 Github에서 Unlimited Private Repository을 사용하지 않거나 서버에 Git을 설치해서 사용하지 않는다면 쉽게 Dropbox를 이용해 프로젝트를 관리할 수 있다. 나 같은 경우, 외부에서 미처 작업을 마무리 하지 못해 커밋을 하지 못했더라도 집에서 남은 작업을 마무리 할 수 있는 환경이 필요했다.

Dropbox Billing (가격)

Dropbox Billing

Dropbox는 2GB가 기본적으로 제공되고 나머지는 Dropbox Basic(무료) 계정에서 용량 더 얻기로 추가적으로 용량을 추가할 수 있다. 그리고 유료의 경우 Dropbox Plus로 업그레이드를 하게 되면 매월 약 $10로 1TB의 용량을 사용할 수 있다. 위에서 소개한 iCloud Drive의 1TB의 용량과 같은 가격이다.

Dropbox 사용 후 장점

Dropbox file changed

Dropbox를 사용하면서 가장 큰 장점은 개인적인 느낌이지만 iCloud를 사용할 때보다 빠르고 무엇보다 현재 동기화 중인 파일들이 Finder의 우측에 아이콘으로 표시된다. iCloud를 사용할 때 아쉬웠던 점이 채워진 느낌이다. 그리고 오른쪽 위의 Dropbox 아이콘에 동기화 중인지 확인이 가능하기 때문에 완료를 쉽게 확인할 수 있다.

Dropbox 선택적 동기화

Dropbox Account Settings

Github에 프로젝트를 올릴 때, 컴파일이나 빌드 할 때마다 생성되는 build 폴더나 설치 명령어로 패키지를 다운 받을 수 있을 경우엔 Github의 레파지토리에 올라가지 않도록 gitignore에 경로를 추가한다. 만약, 코드를 수정할 때마다 빌드를 하면 build 폴더가 변경되어 Dropbox에서 동기화를 곧바로 진행되므로 이는 비효율적이다.

Dropbox Selected Sync

그래서 gitignore와 비슷한 기능이 Dropbox에서는 선택적 동기화를 제공한다. 동기화가 필요하지 않은 폴더들을 선택해서 동기화에서 제외해준다.

Dropbox File Changed

같은 프로젝트로 작업하고 Dropbox의 동기화가 끝났을 경우, 또 다른 맥북에서는 파일들의 변경을 인지하고 IDE(Android Studio)에서 프로젝트를 다시 로드하는 것을 권유한다.

Dropbox File Conflicted

만약에 동기화가 되기 전에 같은 파일을 수정할 경우, 다음과 같이 충돌을 알려주면서 임시 파일이 생성된다. 현재까지 5달간 사용해보면서 동기화가 끝나는 것을 잘 확인하고 바이너리 폴더를 제외한 소스 코드만 선택적 동기화를 잘 시켜주면 동기화 속도가 빠르므로 파일 충돌 문제를 쉽게 발생하지 않을 것이다.

만약 개인 서버를 운영하고 있다면 Unison을 설치해보거나 1TB의 용량을 매월 $10로 사용하기 아깝고 50GB 정도의 용량을 월 $1로 iCloud Drive를 이용할 수 있다. 마지막으로 약 10GB의 용량이 충분하다면 친구 초대를 통해 용량을 추가 획득해서 Dropbox를 사용해보길 바란다.

Slack Integration with Gitlab (Gitlab & Slack 연동하기)

It’s super easy way to enable Slack Integration, first you have to create new channel and then create an Incoming WebHooks on slack.

Create Webhook URL

Go into this following link with your teamdomain on Slack :

https://your_teamdomain.slack.com/services/new/incoming-webhook

Select your channel or create new channel that you want to send notifications and Click Add Incoming WebHooks integration.

You can get Webhook URL for sending data to Slack and also change curtomize name or icon.

These steps are all on Slack for integrating Gitlab. And now you have to use webhook url which gets from slack.

Enter the Webhook URL

Open your Gitlab and find Services right top of menu.

You can find Slack among the project services at the bottom.

Make Active checked and input webhook url from Slack and username, channel that you want. Save changes.

Finally, you will get this notification on your Slack chaneel.