관련된 글이 kldp 포럼에 올라와있는데, SSH 개념을 몰라 삽질했던것들을 바탕으로 재정리 해본다.
kldp.net 은 svn을 ssh 터널링을 이용하여 사용하도록 되어있다. 그래서 업데이트시나 커밋시에 암호입력을 매번해주거나 ssh 의 공개키-개인키 방식을 이용하여 암호입력없이 이용할수 있다.
ssh의 공개키 - 개인키방식이라는것은 접속하고자 하는 호스트에 공개키
를 올려놓고 자신이 사용하는 클라이언트에서는 개인키
를 사용하여 접속하는 방식이다. 만일 개인키-공개키가 rsa라는 알고리즘으로 만들져 있다면, 호스트에 올려져있는 공개키는 보통 접속하고자 하는 홈계정의 .ssh/authorized_keys 파일에 있고, 자신의 개인키는 .ssh/id_rsa에 있다.
이러한 공개키 - 개인키를 만드는 프로그램들이 여럿있는데 openSSH 패키지로 들어있는 ssh-keygen 과 PuTTY Key Generator 가 있다. 그리고 각각의 프로그램이 만드는 키는 동일한 형식을 가지지만 관련 파일을 읽어들이는 방식이 미묘하게 다르다. 즉 PuttY key generator가 만든 키나 ssh-keygen 이 만든 키 형식은 같지만 파일로 저장했을때 서로 다른 형식으로 저장된다.
kldp.net을 키 인증방식으로 접속하고자 했을때 처음 봉착했던 문제가 바로 이같은 차이를 인식하지 못해서였다.
TortoiseSVN에서는 ssh 터널링을 PuTTY 계열의 plink를 TortoiseSVN에 맞게 개량한 TortoisePlink를 사용한다. 그 프로그램을 파일로부터 키를 읽어 들일때 Putty계열 파일형식인 ppk를 이용해 읽어들이기 때문에 ssh-keygen이 생성해낸 id_rsa 파일을 읽어들이기 시도를 하면 실패했던 것이다.
다른 문제는 이 망할 kldp.net 계정시스템 때문이었다.
ssh 공개키같은 경우 kldp.net의 계정편집을 통해서 입력이 가능한데 이것이 crontab을 이용해서 1시간 간격으로 업데이트 된다는게 문제다. 처음에 키와 키가 파일에 저장될때 방식이 다르다는것을 이해하지 못해서 파일내용을 그대로 공개키에 입력을 했었은데 그걸 확인하는데 1시간이 걸린다. 헐..
계정으로 접속해서 .ssh/authorized_keys를 직접편집해보고 싶어도 kldp.net은 계정접속을 금지하기때문에 그렇게 할수 없다. 다행히 scp는 이용이 가능해서 파일을 -r 옵션으로 .ssh 디렉토리 통째로 올리면서 테스트 했다.
여하튼 한방에 kldp.net 계정에 TortoiseSVN을 이용하여 접속하는것을 성공하려면
- ssh-keygen 이 아닌 putty key generator를 이용해서 키를 만들어라. (키는 마우스 움직임으로 만들어주므로 만드는 동안 마우스를 움직여 주어야 한다)
- 공개키 입력은 putty key generator 가 생성한 파일의 내용이 아닌 프로그램에서 붙여넣기를 위해 보여주는 키를 입력하라.