2010년 7월 29일 목요일

svn+ssh:// 자동 로그인


subversion을 ssh로 세팅해놨더니만 정말 불편한게..
뭘 할 때마다 비밀번호를 3~4번씩 입력을 해야된다는 거다.
아파치 서버로 세팅해놨을 때는
비밀번호 저장하는 체크박스가 하나 있어서 그걸 체크해 두면 알아서 다 됐는데 말이다. ㄱ-);
이게 너무 귀찮아서 자동로그인을 하려고 좀 알아봤는데..
이걸로 무려 이틀이 넘게 삽질을 했다.  아우 짜증나.. = _=);


아무튼 고고!


1. SSH 자동 로그인 하기

우선 클라이언트 쪽에서 Key를 생성해 보자. (서버 쪽에서 해도 상관없다.)
나는 cygwin을 사용하고 있기 때문에 리눅스 명령어 쯤이야 OK.
$ ssh-keygen -t rsa
$ ls
ssh-keygen 명령을 실행시키면 몇 가지를 물어보는데 첫 번째는 키를 생성할 디폴트 디렉토리 이다. 나중에 이쪽으로 가서 ls로 확인을 하면된다.
두 번째는 키의 password이다. 그냥 엔터를 내리 치면 나중에 ssh 자동접속 할 때 암호를 안물어 보게 된다.
세 번째는 당연히 password 확인이므로 아까 입력한 것과 같은 값을 입력하면 된다.

ssh-keygen 명령으로 rsa 키를 생성하고 ls를 실행시켜보면,
id_rsa와 id_rsa.pub가 생성된 것을 볼 수 있다.
id_rsa.pub는 공개키로 서버가 가지고 있어야 할 것이고, id_rsa는 클라이언트가 가지고 있으면 된다.

자, 그럼 공개키를 서버로 보내주자.
$ scp -p id_rsa.pub username@서버주소:.ssh/authorized_keys
여기서 username은 자신의 계정이고, 서버주소는 ssh로 접속할 서버의 주소이다.
ip주소를 써도 되고.. 그건 서버 나름.

위와 같이 쓰고 엔터를 치면, username의 홈디렉토리에 있는 .ssh폴더 아래 authorized_keys 파일로 복사가 된다.
여기서 파일이름은 꼭 authorized_keys로 해주어야 하는데, 이것은 config파일에 그렇게 명시가 되어 있기 때문이다.
이걸 구지구지 꼭 욕심내서 이름을 내맘대로 하고 싶다고 하면 /etc/ssh/sshd_config 파일을 고치면 된다. (root 계정만 접근 가능하다)

만약 .ssh 폴더가 홈디렉토리내에 없으면 에러가 날 수 있다.
ssh 비밀번호를 물어보게 되는데 일단은 서버에서 사용하는 비밀번호를 입력하여 파일을 보낸다.

이제 클라이언트에서 할 일은 다 끝났다. 접속해보자.
$ ssh username@서버주소
아까 key를 생성할 때 비밀번호를 입력했다면 그 비밀번호를 입력하라고 할 것이고,
그냥 enter만 연신 눌렀다면 바로 그냥 접속이 된다.

만약 아까 key를 생성할 때 비밀번호를 입력했음에도 불구하고 비밀번호를 입력하기 귀찮다면,
다음과 같은 명령어를 수행한다.
$ eval $(ssh-agent)
$ ssh-add
첫 번째 줄 명령어를 수행하면 agent pid 어쩌고 라는 글이 뜬다.
그 때 add 명령어를 수행해주면 비밀번호를 입력하지 않고도 무사히 접속 가능하다.



2. 키 저장하기

만들어 둔 키를 저장해보자.
그러기 위해서는 puttygen파일이 있어야 한다. (다운로드하러가기)
load를 클릭하여 위에서 만든 key를 찾아 load한다.
이 때 pub key를 load하는 것이 아니라 'id_rsa' 파일을 load한다.

load를 하면 key가 뭐라고 뭐라고 뜨는데, 이 때 "Save private key"를 클릭하여 그 키를 적당한 곳에 저장한다. 이름도 지정해주고 확장자는 'ppk'이다.



3. Subversion에서도 자동로그인!!

우선 subversion으로 공유할 폴더를 하나 만든다.
나는 D:\test라고 만들었다. (이건 뭐 상관없다..-_-; 아무의미도 없고;;)
폴더를 만들었으면 폴더에 마우스를 갖다대고 우클릭!!

TortoiseSVN > Setting > Network
하단에 SSH client: 부분에다가 다음과 같이 입력한다.
"C:\Program Files\TortoiseSVN\bin\TortoisePlink.exe" -ssh -l username -i"C:\cygwin\home\.ssh\svnTest.ppk" -P 22

여기서 첫 번째 경로는 TortoisePlink.exe의 경로이고 두 번째 경로는 저장한 키(.ppk)가 있는 경로이다.
그리고 username에는 ssh에 로그인할 때 사용할 이름을 입력한다.
마지막 숫자는 ssh의 port번호인데 기본적으로는 22번을 사용한다.

이렇게 해두고 svn에 update나 commit을 위해 접근하면 key에서 사용한 비밀번호를 물어보게 된다.
물론 비밀번호를 지정하지 않았다면 묻지 않겠지만,
비밀번호를 입력했다면 묻는것이 당연하다.



4. pageant 사용

위의 과정에서 비밀번호를 매번 입력하지 않게 하기 위해서 pageant라는 프로그램을 사용한다.
pageant 프로그램도 putty 다운로드 사이트에서 받을 수 있다. (다운로드받으러가기)
다운받아 실행시키면 다음과 같은 창이 뜬다.
여기서 AddKey를 눌러 아까 ppk로 저장해 두었던 파일을 불러온다.
그러면 key가 등록이 된다.
여러 개를 등록할 수도 있다.

이 프로그램을 사용하면, 처음에 컴퓨터를 켤 때만 비밀번호를 입력한 후 그 이후로는 자동으로 로그인 되어 사용할 수 있다.
죄측 하단에 트레이 아이콘으로 계속 살아있다.





덧,

댓글 없음:

댓글 쓰기