2009년 8월 20일 목요일

mercurial 을 ssh 통해서 사용하기 - 좃스팟에 썼던 글 백업

유닉스 등에서 간단한 사용법 path 를 줄때 // 가 들어간다는것만 기억하삼

ssh 를 통한 clone

hg clone ssh://누구@어느호스트//경로/경로
호스트와 path 사이에 / 가 두개 들어간다는것만 기억해두자.
~id 를 쓸때는 모양이 좀 달라져서 / 하나로 충분. 즉 ssh://yoonkn@192.168.0.7/~yoonkn/emacsssh://yoonkn@192.168.0.7//home/yoonkn/emacs 는 동일 ( 물론 ~yoonkn 이 /home/yoonkn 일때 )

그외 상세한것은 http://hgbook.red-bean.com/hgbookch6.html 를 읽어보면 될듯


win32 에서 간략히 쓰는 방법. 안전하지는 않다.

만 약 win32 환경이라면 키를 만들고 agent 띄우는 삽질을 해야 하는데.. 이거 짱나서 못할짓이니 좀 엄하지만 암호를 그냥 커맨드라인에서 쳐버리자. 편한게 좋은거지... 윈도머신까지 정말 안전하다는 보장이 있다면 ini 등에 -pw 옵션까지 박아버리는 수도 있지만 이건 좀 모양이 안좋다. 환경변수에서 ssh client 를 가져가는 방법이 있으면 좋겠는데... 암호치는것 누가 등뒤에서 봐도 좀 곤란한 일이니까.. 흠 메뉴얼을 뒤져보고 만약 없다면 적당한 배치파일을 만들자.

안전하지 않지만 편리한, plink 를 통한 ssh 통신 방법

hg clone -e "plink -pw 암호" ssh://누구@어느호스트//경로/경로

추가. push/pull 이 생각처럼 자주 하는일이 아니네. 그냥 ssh 날로 쓰고 매번 암호 물어볼때마다 쳐주는것도 할만 하다. plink 가 필요에 따라 똘똘하게 대화창으로 암호묻는것도 맘에 든다.

리눅스 서버에서 특정 id 의 ssh 접근을 ip 별로 블럭하기

위 에서 적은대로 사무실의 내 데스크탑(우분투)를 임시로 메인 리파지토리로 사용하고 있다. 그런데 윈도에서 접근하려면 아주 성가시므로 암호를 아예 없애거나 간단한 단어를 쓰려고 생각중인데.. 따라서 내가 원하는 몇몇 호스트를 제외하고는 ssh 접근을 막아야만 했다. 처음엔 간단히 /etc/hosts.allow 와 /etc/hosts.deny 를 수정하면 되겠지 했는데 이게 잘 안되더라.. 결국 구글링해서 적당한 방법을 찾아내고 여기 적어둔다.

http://www.cyberciti.biz/tips/openssh-root-user-account-restriction-revisited.html 를 참고하자. 내가 했던 절차를 적어둔다.

  1. /etc/pam.d/ssh 에서 account  required     pam_access.so 부분의 주석을 벗겨줬다.
  2. /etc/init.d/ssh restart 를 이용 sshd 를 재시작 해줬다.
  3. /etc/security/access.conf 에 다음 내용을 추가했다. foo 사용자의 접근을 111.111.111.111, 222.222.222.222 를 제외한 모든 장비로부터 막는 예제이다. 실제 사용을 위해서는 로컬호스트도 풀어주고 해야겠지...
  - : foo : ALL EXCEPT 111.111.111.111 222.222.222.222


추가. UbuntuFireWall 을 쓰면 비교적 쉽게 이런 세팅이 가능하다. hg serve 명령으로 여러개의 리파지토리 서빙하기 참고.

pageant 를 이용해서 암호 입력 생략하기 (windows)

내래 agent 쓰는걸 별로 안좋아하고 매번 암호치는 놈이니 이렇게 쓰지는 않지만 그냥 적어둔다. 언제 기호가 바뀔지 모르지.

이하는 사전작업. 자신의 공개키/비밀키를 만들고 서버에 공개키를 등록하는 과정.
  1. windows 에서 putty 깔렸다 치고
  2. puttygen 으로 적절히 키 생성.
  3. puttygen 에 생성된 공개키를 서버(여기선 mercurial 리파지토리가 될 놈이겠지)의 ~/.ssh/authorized_keys 에 추가. 없으면 새로 생성. 이 ~.ssh 이하는 퍼미션이 700 또는 600 으로. group 이나 others 에 권한이 있다면 에러가 날 가능성이 있다. 물론 공개키를 로컬에도 남겨둬야 여기저기 써먹지. 난 주로 c:\public.key 에 남긴다.
  4. puttygen 에서 비밀키를 저장하자. 난 c:\private.ppk 란 이름 주로 사용
이하는 접속할때마다 해줄 작업. 당연히 클라이언트(여기선 윈도) 에서만 해주면 된다.
  1. pageant 를 띄워서 add key 로 c:\private.ppk 추가. 필요하다면 ppk 로딩하는 배치파일을 시작프로그램 넣어서 자동화. 뭐 필요할때마다 띄워도 충분. 보통 키생성시에 passphrase 를 걸어줄텐데 그럴경우 자동시작 하기가 좀 꺼려진다...
  2. cmd 창을 열어서 plink 가 pageant하고 통신을 하는지 확인해보자. plink -i private.ppk yoonkn@111.111.111.111 hg version
  3. 끝. putty GUI 버전을 자주 쓴다면 적절히 세팅.

ssh 통해서 mercurial 을 쓸때 통신 데이타 압축하기

hgbook 을 보니 mercurial 은 로컬에 델타데이타를 저장할때 gz 형식을 쓰고 hg serve 를 통해서 http 통신을 탈땐 bz2 방식으로 압축을 하는데 ssh 를 탈때는 압축을 하지 않는다고 한다. ssh 가 압축기능을 가지고 있다고 하기 때문인데 이럴경우 ssh 또는 plink 에 -C 옵션을 줘야 한다... Mercurial.ini 등에 ssh 설정이 있을텐데 -C 를 추가하도록 하자. tortoise hg 는 이걸 기본적으로 안해주더라. 자잘하게 손이 많이 가네...

리눅스에서 ssh agent 사용해서 암호입력 생략하기

위에 윈도에서 하는 방법을 적고 나니 이것도 같이 적어줘야 겠다는 생각이 드네. http://wiki.kldp.org/wiki.php/UsingSshAgent 에 정리가 잘되어있으니 참고하자.
  1. ssh-keygen 으로 키 생성.
  2. ssh-copy-id yoonkn@111.111.111.111 명형으로 공개키 추가. 물론 pageant 때 처럼 수작업 해줘도 되겠지.
  3. 끝. 이제 ssh yoonkn@111.111.111.111 ls 로 확인해보자.




댓글 없음: