블로그 이미지
JEEN

서울에 사는 꽃청년의 IT찌질모험기

Rss feed Tistory
IT/Tips 2011.02.15 01:39

[ git / git-ssh-create ] 회사에서 git 쓰시나요?

http://bit.ly/e0zl3q git-ssh-create rocks!Wed Feb 09 03:25:27 via Echofon



 작년부터 회사에 git 을 도입해서 요즘 새로운 일들은 대개 git repository 를 두고 있습니다.
 뭐 매번 새로운 repository 초기화를 위해서 자주자주 하는 일은 아니지만...
 repo server 에 들어가서 bare repository 만들어주고 그걸 또 작업공간에서 clone 떠서 이래저래 슥샥슥샥 하며 오가기도 합니다. ... 회사마다 어떨지는 몰라도 사실 bare repository 는 그렇게 자주 만들지는 않습니다만...

  @aanoaa 님 회사같은 경우처럼 아주 그냥 github 에 돈주고 private 계정 끊어버리는 경우도 요즘은 제법 보이기도 하구요.

  아무튼 위의 저런 일련의 과정들을 어느정도 수준까지 단소화시킬 수 있는 툴을 발견해서 소개할까 합니다.



  아무튼 그렇게 자주 사용하지는 않지만, 예전부터 이런 게 있었으면 하는 그런 툴이어서 :-)
신고
IT 2010.03.12 13:16

[ SSH! ] 서버, SSH, 그리고 보안

  올해들어서 세번정도 데이터센터 입구쪽 서버한대에 SSH 공격이 있었습니다. 

  대략 중국이랑 독일쪽에서 온 공격인데 AllowUsers 지정해놓고, root 로그인 못하게 해놨는데도 계속 찝적거리더군요.
  이대로 놔두면 안되겠다 라는 그런 회의아래에 예방책을 마련하게 되었습니다.

  1. 일정횟수 이상의 인증실패는 나쁜놈으로 간주한다
  2. 걍 SSH 포트 바꿔버린다
  3. 비밀번호 인증을 없애버린다

  저야 뭐 느슨한 정책이 좋아(=사실은 귀찮아서)서 1번만으로 땡하려고 했는데, 다른 여러 의견에 따라서 1,2,3 동시에 다 하자는 결론이 나왔습니다.
 그리고 SA 는 회사, 데이터센터쪽으로 들어오는 입구쪽 서버에 대해서는 회사안에서는 현재 포트로 유지, 외부로부터의 접속에는 특정포트로 지정하겠다는 룰을 정했습니다.

 그래서 2,3번 예방책으로...  
  sshd_config 를 하나 더 만들고 포트번호를 바꾸고, 패스워드 인증을 꺼버렸습니다. 

#/etc/ssh/sshd_config-diff
Port ****
....
PermitRootLogin no
....
PasswordAuthentication no
....
AllowUsers ... ... ... ...

그리고 sshd 를 하나 더 띄웠죠.
$ /usr/sbin/sshd -f /etc/ssh/sshd_config-diff 

어차피 기존에 쓰던 공개키는 같으니까... 공개키인증 해놓고 포트만 바꾸면 사샤샥 잘만 접속 됩니다. :-) 

 그리고 1번은 별다른 고민없이 DenyHosts 를 선택했었는데요.
 이것도 여러가지 선택지가 있었습니다.

  1. DenyHosts
  2. ssh_guard
  3. fail2ban
   ...

 그외 여러가지 있었던 듯 했는데... 방화벽 설정까지 어쩌고 하는 게 귀찮아서 그냥 DenyHosts 깔아서 돌려줬습니다. 기본 설정으로는 5번 인증실패면 나쁜놈 취급하고 해당 호스트를 막아버리던데...(/etc/hosts.deny) 이건 설정파일 이래저래 만져주면서 조정해줬습니다. (denyhosts.conf)
 SSH 뿐만 아니라 FTP 등등의 다른 것들까지도 슥샥 가능하니 :-) 범용성 면에서는 좋지 않나 생각했습니다.

 사실 웹프로그래밍 안에서의 최소한의 보안에 대한 지식만 있을 뿐.. 서버 보안에는 신경쓰지 않았는데..
 이를 계기로 제 섭의 /var/log/auth.log 를 보니 중국애들이 많이도 저질러 놨길래, root 인증만 막아놓고 Denyhosts 돌리고 있습니다. :-)
신고
IT/Tips 2009.07.29 23:00

[ SSH ] .ssh/config 에 대해서...

  사실은 ssh 를 쓰면서 그냥 단순하게 2년넘게 써왔었습니다.

jeen$ ssh [host]

  이렇게요.

  저희회사에서는 개발용 서버로 들어가기 위해서는 꼭 어떤 서버를 거쳐서 들어가야 합니다.
 
  제가 쓰는 PC 에서 A라는 서버에 접속해서 A 의 DB 서버로 들어간다든가, A 랑 관계있는 어떤 서버로 들어간다든가 하는 것이죠.

  그래서 맥북에서 A의 DB 서버로 들어갈 때는

jeen$ ssh lee@a.server
lee@a.server's password:
lee@a.server:~$ ssh a.db.server
lee@a.db.server's password:
lee@a.db.server:~$ _
....
// or
....
jeen$ ssh -t lee@a.server ssh lee@a.db.server
lee@a.server's password:
lee@a.db.server's password:
lee@a.db.server:~$ _

  아, 거기에 맥북에서의 계정은 jeen 인데, 회사에서 쓰이는 일반적인 제 계정은 lee 라고 합니다. 서로간의 계정이 다르니까, 매번 접속시에 접속할 서버계정에 Username 을 맞춰줘야 되죠.
  대략 이런 플로우라는 겁니다. (귀찮아서 사실 키 설정도 안했는데, 매번 치는 게 오히려 귀찮은데 말이죠..)

  그럼 이걸 한방에 어떻게 맥북 -> a.db.server 로 들어가느냐...

  예전에 북마크해둔 링크가 하나 있어서 꺼내봅니다.

* http://openlab.dino.co.jp/2007/10/03/17550797.html (일본어)

  즉 $HOME/.ssh/config 를 설정하면 된다는 것입니다.
Host a.db
  HostName a.db.server
  ProxyCommand ssh lee@a.server nc %h %p
 
  이런 설정입니다.

$ ssh a.db
lee@a.server's password:
lee@a.db.server's password:
lee@a.db.server:~$ _

  그러면 각 서버별로 패스워드를 물어옵니다. 이것마저도 귀찮으면 ssh-keygen 으로 인증키를 만듭니다.

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/jeen/.ssh/id_rsa):  (엔터)
Enter passphrase (empty for no passphrase): (엔터)
Enter same passphrase again: (엔터)
Your identification has been saved in ....
Your public key has been saved in ......
The key fingerprint is:
..........

 그리고 생성된 id_rsa.pub 파일을 각서버의 $HOME/.ssh/authorized_keys 에 첨부합니다.

 맥북 -> A서버 -> A서버의 DB 서버 일경우에는
 보통 맥북에서 생성된 인증키를 A서버에
 A서버에 생성된 인증키를 A서버의 DB 서버에 첨부합니다.
 ....
 ....
 물론 일반적인 경우에는 그렇지만... 위의 .ssh/config 를 설정한 상태에서는
A서버의 DB서버에는 A서버의 인증키가 아니라 맥북의 인증키가 필요합니다.

 최근에는 집에서 잠깐 회사서버로 접근하거나 하는 일이 많아져서... 회사 프록시 타고 들어가야 하는 일등이 많이 있고, 이럴때마다 계정이름 등등.. 많이 귀찮기도 해서... ssh_config 설정한 김에 그냥 시간들여서 모조리 인증키 설정하고 자주 사용하는 서버에는 한방에 갈  수 있도록 설정도 했습니다.

  물론 SCP 의 경우에도 적용됩니다. 위의 설정이 끝난 다음에는 맥북 -> A 서버의 DB서버로 파일을 전송할 시에도 위의 ssh_config 에서 설정한 Host 를 그대로 사용할 수 있습니다. 

  한순간의 귀찮음을 잠깐만 극복하면... 앞으로 편해질 수 있다는 사실...
  참 쉽게 간과해버리죠. (역시 인간이란 재미있어...)

** 추:
  그리고 이번기회로 예전에 @saillinux a.k.a 세일덕이 Y모사에서 SSH 때문에 옥상에 끌려갔다는 사실을 비웃었던 것에 대해서 심심한 사과를 ...
신고
IT/Mac 2009.06.17 17:26

[ Mac ] ExpanDrive++ - SFTP/FTP 를 그냥 Finder 에서!!


  최근에 가입이 승인된 AppleForum 을 둘러보면서 ExpanDrive 에 대한 글을 접하게 되었습니다.
  (AppleForum 을 가입승인없어도 글은 볼 수 있습니다)


 SFTP, FTP 를 그냥 마운트해버려서 Finder 에서도 쉽게 볼 수 있다!
 
 라는 것에 눈이 번쩍 뜨였습니다.

  이제껏 맥에서 작업하다가 제 섭으로, 아이폰으로, 회사 컴퓨터로
  일일이 scp 를 때려가면서 삽질을 하고 있었기 때문이죠.
   (거기에 username 은 컴퓨터마다 다 달라서... ;ㅁ;)

  가격은 무려 $39.95 입니다. 무려라고 할까.. 예전에 Things 나 Notebook 샀을 때랑 비슷비슷하군요.

  가장 필요한 이유는... 최근에 Mac을 다시 깔고나서 DiskAid 가 작동하지 않아서..
  iPhone 에 iComic 으로 볼 만화를 못 집어넣고 있었던 것이 가장 컸습니다(80%)
  물론 업무적인 차원에서도 이래저래 불편한 점은 많이 있었죠(20%)

 이제 ExpanDrive 로 원큐에 해결!


 왠지 업무효율(?)이 5%는 오른 것 같은 느낌이 듭니다.
신고
ExpanDrive, FTP, mac, SFTP, ssh
IT/Perl 2008.10.22 21:16

[ Perl ] Expect 를 이용해서 자동화하기


  경황이 없어서 급하게 짜놓은 예전 코드들을 보면... 뭐 Perl 코드에 system 호출해서 셸 스크립트 실행하는데... 그 셸 스크립트 안에는 또 Perl 스크립트를 실행하게 해놓은 코드였습니다.

  Perl 로 된 Web App 에서 system("./script/blah.sh) 같은 걸 해놓고
  blah.sh 안에는.. perl ./script/blah.pl 같은 작업이 있는 것이죠.

  그리고 걔중에는 소스코드 안에 계정 정보도 포함되어 있어서... 상당히 불쾌감을 안겨주었습니다.

  그런 중에 이번에야말로 Expect 를 써보자 라는 생각에 Expect 를 썼습니다. ;ㅁ;

  뭐 명령은 근데 간단합니다. 계정 정보는 사전에 암호화 시킨 것을 YAML 에 넣고, 그것을 복호화해서 쓰도록 했습니다;;
  (뭐 맘먹으면 개나소나 알 수 있을 테지만... ;ㅁ;)

  이게 SSH 로 리모트에 접속해서.. 어떤 처리를 슥샥 해서... 그 정보를 로컬로 가져와서 또 어떤 처리를 돌리고, 그것을 또 가져와서 슥샥슥샥...

  각각의 스크립트는 방대하기 그지없어서... 통합할 생각도 못하고 저렇게 내버려뒀습니다.
   
  저 역시 아주 간단한 사용법으로 슥샥해버려서...:-)

  코드는 yundream 님의 블로그에서 참조했습니다. 그래서 소스는 이쪽을 참조하시면 되겠습니다.

  Expect 는 너무 편리하더군요.

  이제는 Web App 에서 직접 system 호출하는 것보다... TheSchwartz 같은 것을 도입하려고 하는데...
  아직 검증이 안되어서... 다음을 기약해야 되겠군요.


  요즘은 개인 리포지트리에 일련의 샘플코드를 모아두고 있습니다. 가끔 한번 써봤던 모듈 사용법도 까먹을 때가 있어서 말이죠. (특히 도큐멘트가 그리 충실하지 않은 모듈들... App::CLI 같은..) 근데 제 소스도 아닌 것도 모으고 있고...;; 일단 펄 관련 소스라면 무조건 모으고 보자는 맘으로 집어넣고 있습니다.


  아무튼 요즘은 공부가 부족하다는 것을 새삼 느끼는 나날들입니다. 슬슬 개인적인 프로젝트를 하나 만들어서 나름 생각하고 있는 것들을 써먹어야 되겠다는 생각도 하고 있습니다.

  생각만해서는 안될텐데 말이죠.. ;ㅁ; SSH!

신고
TOTAL 462,330 TODAY 27

티스토리 툴바