http://wiki.kldp.org/wiki.php/UsingSshAgent 에 오늘 쓴 글.

1 서설

subversion을 항상 local에서만 사용하다가 얼마전에 archive 전용 서버를 하나 마련하고 remote로 사용하고 있었지요. svn+ssh 을 이용해서 접속하고 있었는데, 이거 매번 ssh을 위해서 패스워드를 치기가 영 귀찮은 것이 아닙니다. 어떤 때는 coding하는 시간보다 패스워드 치는 시간이 더 긴 것 같다는 착각이 들 때도 -.-;;;; 그래서 ssh-agent를 사용하는 방법을 찾아봤는데 의외로 간단히 정리돼 있는 게 없어서, 아주 간단히 사용방법의 하나를 소개합니다. 이후는 편의상 반말로 :)

2 미리 확인할 것들

  1. 우선 당연히 ssh client와 server가 제대로 동작하도록 설정하였는지 확인한다.
  2. 위의 사항이 제대로 되었으면 당연히 되겠지만, 혹시 모르니 ssh-keygen, ssh-copy-id, ssh-agent, ssh-add의 명령어가 사용 가능한지 확인한다.

3 상황 설명

현재 자신이 작업하고 있는 머신이 machA라고 하고, svn+ssh server가 돌고 있는 머신을 machB라고 하자. 편의상 두 머신에 alice라는 username으로 계정을 가지고 있다고 가정한다.

4 준비 작업

우선 ssh용으로 쓸 key pair를 만들어야 한다. machA에서 다음의 작업을 수행한다.

alice@macha:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/lbird/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): <password>
Enter same passphrase again: <password>
Your identification has been saved in .ssh/id_rsa.
Your public key has been saved in .ssh/id_rsa.pub.
The key fingerprint is:
33:d9:ac:19:bd:75:13:e5:4a:d9:3c:98:fa:4f:39:d6 lbird@debian
alice@macha:~$

key를 생성했으면 machB로 공개키를 전달해야 한다. machA에서 다음 작업을 수행한다.

alice@macha:~$ ssh-copy-id alice@machb
alice@machb's password: <alice@machb의 password>
Now try logging into the machine, with "ssh 'alice@machb'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
lbird@debian:~$

여기서 <alice@machb의 password>와 위의 <password>는 같을 필요는 없다는 것에 유의. 확인은 안해봤지만 당연히 그럴 것 같다. :)

5 ssh-agent 설정

다른 곳에 좋은 설명이 많겠지만 간단히 설명하면, ssh-agent라는 프로그램은 한번 실행하면 계속 메모리에 상주하면서 사용자의 private key를 안전하게 보호하고 있게 된다. 여기에 ssh-add라는 프로그램으로 사용자가 추가하고 싶은 private key를 집어 넣을 수 있다. ssh-agent는 실행될 때 소켓을 하나 만든다. 다른 프로그램들은 그 소켓 이름을 SSH_AUTH_SOCK라는 환경 변수에서 알아내서 ssh-agent와 통신해서 private key를 얻는다.

machA (자신의 주 작업장)에 처음 로긴하면 일단 다음의 명령을 실행한다.
alice@macha:~$ ssh-agent > ~/.ssh-agent.sh

순서는 좀 바뀌었지만, machA의 alice의 홈디렉토리에 있는 .bash_profile에 다음의 몇줄을 추가하도록 한다.
# ssh-agent variables
if [ -f ~/.ssh-agent.sh ]; then
. ~/.ssh-agent.sh
fi

사실상 ssh-agent와 관련한 작업은 이제 끝났고 사용만 하면 된다.

6 사용

사실 그냥 쓰면 된다. -.-;;

machA가 한번 부팅된 이후에 잘 리붓하지 않는 머신이라면 부팅 직후 첫번째 로긴에서 위의 ssh-agent를 실행하는 작업을 해주면 다음에는 아무런 작업이 필요 없다.

자주 리붓되는 머신이라면 역시 부팅 직후 첫번째 로긴에서 ssh-agent를 실행해 주면 된다. (앞 단락이랑 같은 얘긴데 -.-;; )

7 사족

그냥 끝내면 심심하니까.. ^^

ssh-agent가 없을 때는 접속할 때 이런 식이다.
alice@macha:~$ ssh alice@machb
Password: <alice@machb의 password>
Linux machb 2.6.8-2-686 #1 Tue Aug 16 13:22:48 UTC 2005 i686 GNU/Linux
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have mail.
Last login: Wed Dec 27 12:02:44 2006 from macha
alice@machb:~$

ssh-agent가 있으면

alice@macha:~$ ssh alice@machb
Linux machb 2.6.8-2-686 #1 Tue Aug 16 13:22:48 UTC 2005 i686 GNU/Linux
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
You have mail.
Last login: Wed Dec 27 12:02:44 2006 from macha
alice@machb:~$

password 안 물어본다. (사실 처음 접속할 때는 물어본다 :p)

svn+ssh을 통해서 작업한다면 update나 commit을 할 때마다 한두번씩 물어보는 패스워드를 처음에 한 번만 입력하면 된다는 아주아주 편리한 점이 생긴다.

  
트랙백   |  댓글   |

최근댓글
fotowall :: ncloud RSS Feeds today :    yesterday :
total :