SSH 설정 방법
서버가 A B C 3개의 서버가 있다고 하고
세개의 서버들이 서로 SSH가 가능하도록 설정하는 과정은 다음과 같다.
아래 작업들은
A -> B ,C
B -> A, C
C -> A, B
와 같이 모두 설정하는 것을 가정한다.
서버를 접근할수 있도록
/etc/hosts.allow 파일에 ssh를 허용하는 서버 ip를 등록해야 하고
ip가 아닌 도메인으로 접근하기 위해서는 /etc/hosts 파일에 해당 IP에 대한 도메인을 등록해야 한다.
A서버 /etc/hosts 파일
XXX.000.XXX B
000.XXX.XXX C
sshd:XXX.000.XXX , 000.XXX.XXX
우선 각 서버(A,B,C)에서 아래의 명령어로 서버들 사이에 보안을 위해 주고받을 키값을 생성한다.
# ssh-keygen -t rsa
enter
enter
이후에 생성된 키값을 다른 remote(A에서 생성했을때 B,C 가 remote server가 된다) 서버에 복사해야 한다.
리눅스 버전에 따라서 두가지로 나뉘는데
4.x에서는 수작업으로 복사를 해야하고
5.x에서는 해당 작업을 수행하는 바이너리가 존재한다.
우선 4.x대일 경우
# cat .ssh/id_rsa.pub
위 명령어를 실행하면 해당 서버에서 발행항 키값이 보인다.
이 키값을 다른 remote 서버에 복사하면 되는데
.ssh/authorized_keys에 복사한 키값을 넣고 저장한다.
5.x대의 경우는 ssh-copy-id 라는 바이너리가 존재하는데
ssh-copy-id -i ~/.ssh/id_rsa.pub target-server
서버라고 하더라도 간혹 다시 부팅을 해야 하는 경우가 있다.
이럴 경우 자동으로 sshd을 실행하기 위해서는 다음과 같은 작업을 해야한다.
서버가 부팅될때 어떤 프로그램들을 구동할때 어떤 레벨로 구동되는지를 알아야 한다.
그런 정보가 있는 파일이 /etc/inittab이라는 파일인데
이파일의 내용을 보면
cat /etc/inittab
id:3:initdefault:
라는 내용이 있다.(3레벨은 일반적인 세팅이다)
위 내용은
ls -al /etc/rc3.d/ 아래에 있는 스크립트들을 자동으로 실행한다는 의미인데
이파일을 자세히 보면 모두 심볼릭 링크로 되어 있는것을 알수 있다.
수작업으로 이 파일을 만들어 심볼릭 링크로 연결할수도 있지만
자동으로 하는 방법을 소개하면
# chkconfig --level 3 sshd on
# /etc/init.d/sshd restart
chkconfig 라는 바이너리인데 level 3으로 sshd 데몬을 실행한다는 의미가 되겠다.
--------------------------------------------------------------------
이렇게 설정했는데 계속해서 패스워드를 묻는다면
--------------------------------------------------------------------
* (local server -> remote server) remote 서버에 대한 설정
.ssh 디렉토리 권한은 700
chmod 700 .ssh
.ssh/authorized_keys 권한은 640
chmod 640 .ssh/authorized_keys
remote server의 해당 계정에 대한 권한을 755로 수정
chmod 755 .
=====================================================================
ssh 로 스크립트 실행
=====================================================================
ssh로 remote server의 script를 실행할경우
해당 스크립트에서 daemon과 같은 프로그램이 실행될수 있다.
이럴 경우 local script와 remote server의 daemon 사이에 stdin과 stdout이 서로 물리게 된다.
remote sever의 실행 결과를 local server에서 볼수 있는 것과 위 기능때문인데
데몬의 경우 프로그램이 종료되지 않기 때문에 local server의 script도 해당 라인에서 대기
상태로 머물러 있게 된다.
여러대의 서버를 순차적으로 실행하기 위해서는
local server의 script에 stdin과 stdout을 막아 놓아야 하는데
이럴때 사용하는 방법이 아래와 같다.
exec 1<>/dev/null 2<>/dev/null
=====================================================================
=====================================================================
SERVER1 -> SERVER2
=====================================================================
* To do SERVER1
ssh-keygen -t rsa
copy
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1dUMxF2J8S1Wzo+m2LWEV7tK6Cma1GVx25IDmiC6f5lj/Yn9TyIEMO7jmafXkHkoHRlg9WMfv+Jx9+a5ADTSa2hKHG+BmEIxJfGp5tOUDOZcS8qbCsWSTkRzHiQ1FyY3mQ5lMqA4SgrDoKOQQEg1El9mhAENkIa5Sn0T+0HtG7Qr742uIiP0fLqi9MFZDAi7GiQ9AVUyXnAvi0LMtPVMb+q1LDX1us96PEegeWE2v0NzB9qqX0LUfdCjEBGr3dcOx1z/EOV+poeF64rhH10vbqtaf7Qf0C8Vu396ZxWZ/sDWz6SK0A6TClAg/q3mqpWQ7FX25k2SNuCXbtSyrC4jvQ== jchern@search-nlp-anal1
* To do SERVER2
vi /etc/hosts
SERVER2_IP SERVER_NAME
vi /etc/hosts.allow
sshd:SERVER2_IP
vi authorized_keys
* troubleshooting
It is recommended that your private key files are NOT accessible by others.
chmod 600 id_rsa
'프로그램' 카테고리의 다른 글
This client is too old to work with working copy (0) | 2011.08.05 |
---|---|
sudo 비밀번호 없이 동작 (0) | 2011.07.27 |
아파치 프로세스 설정 및 아파치 로그 설정 (0) | 2011.07.04 |
rsh 설정 (0) | 2011.04.13 |
구글 번역기를 AJAX API로 사용하기 (0) | 2008.03.23 |