삽질하는플머

ssh 연결시 암호 입력 건너뛰자.

탐구생활/CYGWIN
ssh의 멋진 점은, 내가 원하는 명령을 서버에 전달하고 그 결과값을 받아볼 수 있다는 것이다.
예를 들어 다음과 같은 명령어를 통해

ssh root@192.168.0.151 ps -eaf

현재 서버에서 192.168.0.151 서버에서 구동중인 프로세스 리스트를 살펴볼 수도 있다.
screen과 병행한다면 원격지에서 한 번의 명령으로 많은 서버를 구동 / 정지시킬 수도 있다는 의미!

다만 이 경우 대상 서버의 암호를 입력 해야 한다. 이 부분은 자동화의 적! 따라서 암호없이
ssh 연결을 하는 방법을 알아보자.

다음 사이트에 좋은 정보가 있다. 
http://www.csua.berkeley.edu/~ranga/notes/ssh_nopass.html

간단히 정리 해 보면...

1. 먼저 클라이언트에서 다음 작업을 진행한다.


$ mkdir -p $HOME/.ssh
$ chmod 0700 $HOME/.ssh
$ ssh-keygen -t dsa -f $HOME/.ssh/id_dsa -P ''


한 번이라도 ssh를 사용했더면 $HOME/.ssh 디렉토리가 이미 존재하므로 윗 두 줄은 생략해도 좋다.
이제 .ssh 디렉토리에는 개인키 id_dsa 와 공개키 id_dsa.pub 두 개의 파일이 생겼다.

2. 위에서 생성된 공개키 id_dsa.pub 파일을 서버로 옮겨준다.

3. 서버에서 다음 작업을 진행한다.


$ cat id_dsa.pub >> $HOME/.ssh/authorized_keys2
$ chmod 0600 $HOME/.ssh/authorized_keys2


OpenSSH의 버전에 따라 다음 작업이 추가로 필요할 수도 있다.


$ cat id_dsa.pub >> $HOME/.ssh/authorized_keys
$ chmod 0600 $HOME/.ssh/authorized_keys


또는 심볼릭 링크를 걸어도 좋다.


$ cd $HOME/.ssh && ln -s authorized_keys2 authorized_keys


4. 클라이언트에서 다음과 같이 연결을 테스트 해 본다.


$ ssh -i $HOME/.ssh/id_dsa server



다음 화면은 Cygwin 이 깔린 로컬 컴퓨터에서 ssh로 우분투가 깔린 컴퓨터에 접속해 ls -al 를 날리고 그 결과를
받아오는 화면이다.






발급된 개인키를 사용해 PuTTY로 로컬호스트에 패스워드 없이 접속해보자. 
PuTTY Key generator 를 실행시킨다. 




Load 버튼을 눌러 위에서 만들어둔 개인키 id_dsa 를 불러들인다. 성공적으로 불리웠다는 메시지가 나오면 이번에는 'Save private key' 버튼을 눌러 *.ppk 형식으로 저장한다. 이 때 패스워드를 입력하지 않으면 경고가 뜨는데 지금 목적은 패스워드 없이 접속하는 것이므로 무시하자. 

PuTTY Config 에서 새로운 세션을 만들고 SSH - Auth 항목의 'Private key file for authentication' 에 방금 생성한 PPK 파일을 지정해준다. 

로컬호스트가 PuTTY에서 지정된 개인키를 인식할 수 있도록 해주어야 한다. 

$ cd ~/.ssh
$ cat id_dsa.pub >> authorized_keys2
$ ln -s authorized_keys2 authorized_keys


이제 접속해보면 암호를 묻지 않고 바로 들어갈 수 있게 된다. 




이 다음에 살펴볼 PuTTY_Cyg 를 사용하면 간단하지만, 그래도 로컬이 아닌 다른 접속에 유용한 내용이므로 정리 해 둔다.