대부분의 오픈 소스 프로젝트들과 소스컨트롤들이 git으로 가고 있는 현 추세에 맞춰서 ssh키 관리하는 글을 하나쓸까한다. 현재 필자는 윈도우 머신 2대, 맥, 리눅스와 호스팅서버, VPS 모두 사용해야하는 상황인데 그렇다고 해서 키를 시스템별로 다 새로 만들어서 사용하는 것은 아니기에 이렇게 가이드 문서를 하나 만든다.
먼저 ssh키를 하나 생성하도록 하자. ssh키는 자신의 이메일 주소당 하나 있다고 생각하는 것이 맞는 것 같다. 필자의 경우에는 개인용 프로젝트에 사용하는 이메일 계정에 맞는 키 1개 그리고 회사에서 일할 때 쓰는 키 1개 이렇게 2개로 운영하고 있다.
- 환경 전제
윈도우에서는 cygwin을 사용한다고 전제하자. 맥과 리눅스는 터미널을 사용한다고 하자.
- 키 생성하기
먼저 자신의 키를 하나 만들어야 한다. 새 환경 중 아무데서나 다음의 키를 이용해서 키를 하나 만든다.
ssh-keygen -t rsa -f mike3dk -C [email protected]
이러면 passphrase를 물어보는데 비밀번호를 잘 넣어주면 된다.
그러면 자신의 홈디렉토리의 .ssh 디렉토리안에 다음의 2개의 파일이 만들어진것을 볼 수 있을 것이다.
~/.ssh/mike3dk
~/.ssh/mike3dk.pub
.pub파일은 자신의 퍼블릭키이고 그냥 파일은 자신의 프라이빗키이다. 공개키는 여기저기 막 놓아두어도 상관없지만 private키는 잘 간수하는 것이 좋겠다. Github나 다른 Git관련 솔루션에서 내 계정과 연결할 때 쓰는 공개키가 바로 mike3dk.pub 이 파일이다.
- 이 키를 이용해서 ssh 로그인해보기
이 키를 이용해서 다른 사이트에 로그인을 해보자.
그러면 ssh 비밀번호를 물어보는데 그 키를 넣어주면 된다.
- 이제 비밀번호 없이 그 사이트에 로그인을 하는 법을 해보자.
크게 2가지 방법이 있는데 하나는..
cat .ssh/mike3dk.pub | ssh [email protected] 'cat >> ~/.ssh/authorized_keys'
다른 하나는 ssh-copy-id 명령어를 사용하는 법이다.
ssh-copy-id -i ~/.ssh/mike3dk.pub [email protected]
- 이 키를 이용해서 다른 시스템에서 사용하기
방금 만든키를 이용해서 다른 환경에서 사용하기 위해서 먼저 이 키페어를 다른 시스템으로 복사를 한다.
scp ~/.ssh/mike3dk myid@mymac:~/.ssh/ scp ~/.ssh/mike3dk.pub myid@mymac:~/.ssh/
이 키를 이 시스템에서 쓰겠다고 하기 위해서는 먼저 ssh config파일을 만들어 줘야한다. 키가 설치가 안된 다른 환경으로 먼저 가서 config란 이름의 파일을 .ssh디렉토리 안에 만들고 다음의 내용을 추가해준다.
touch ~/.ssh/config
IdentityFile ~/.ssh/mike3dk
- ssh-agent 띄우기
eval `ssh-agent`
- key chain 사용하기
keychain은 자동으로 ssh-agent를 관리해주는 키 관리자이다.
맥에는 키체인이 GUI버전의 키체인이 기본으로 깔려있다.
대부분의 시스템에는 기본으로 설치되어있지는 않으니 일단 각 환경에서 설치하는 법을 적어보면
6.1 Ubuntu
- keychain package를 인스톨한다.
sudo apt-get install keychain
- keychain이 읽는 파일들을 만들어줘야 한다. 이를 위해 keychain을 한번 실행하도록 하자
mkang@W10023 ~ $ keychain KeyChain 2.6.8; http://www.gentoo.org/proj/en/keychain/ Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL * Initializing /home/mkang/.keychain/W10023-sh file... * Initializing /home/mkang/.keychain/W10023-csh file... * Initializing /home/mkang/.keychain/W10023-fish file... * Starting ssh-agent
- .bashrc 파일을 편집해서 다음의 2줄을 넣어준다.
/usr/bin/keychain ~/.ssh/mike3dk source ~/.keychain/$HOSTNAME-sh
그러면 ssh-agent를 한번에만 로딩하면서 키들은 캐쉬되어서 패스워드 안 넣어도 되는 시스템이 된다.
- 현재 돌아가는 모든 ssh-agent를 죽일려면
keychain -k all
6.2 Cygiwn
- keychain을 인스톨 한다.
cygwin 설치할 때 쓰는 setup.exe을 실행시켜 보면 util 쪽에 keychain 이 있다. 이거 설치하도록 한다.
- 나머지는 위와 동일하다.