rlogin
r-commands는 rlogin, rsh, 그리고 rcp 명령어 등과 같이 원격에서 수행되는 명령어로 원격 명령어 라고 한다.
이들 명령어들이 모두 원격에서 신뢰된 로그인 또는 접근을 할 수 있기 위해서는 접근할 원격서버의 /etc/hosts.equiv 또는 홈디렉토리내에 있는 .rhosts파일의 접근 허용설정이 있어야 한다. (둘 중 하나의 파일만 만들면 된다.) 그리고 /etc/xinetd.d/rlogin, /etc/xinetd.d/rsh 등의 xinetd관련 설정파일이 정확하게 설정되어 있어야 한다.
리눅스에서는 .rhosts 파일의 권한이 파일소유자에게만 rw이어야 한다. 그렇지 않을 경우 OS에서 보안상의 이유로 무시해 버린다.
(리눅스 기본 파일 퍼미션이 rw-r--r-- 이므로 그대로 두면 됨)
# rlogin 명령어
rlogin은 패스워드를 입력하지 않고 원격서버로 신뢰받는 원격로그인을 하기 위한 리눅스 명령어이다.
명령어위치 : /usr/bin/rlogin 사용형식 : rlogin [-8EL][-e char][-l 사용자명] 호스트 |
이제 rlogin을 이용한 원격접속을 시도해 보도록 하겠다. 즉, rlogin을 이용한 패스워드 인증절차 없이 바로 원격서버로의 로그인에 대한 실제 예를 보도록 하겠다. rlogin이 정상적으로 수행되기 위해서는 위에서 설명드렸던 접근허용설정이 되어 있어야만 한다.
실제 접속을 위하여 A서버의 특정 계정에서 B서버의 특정 계정으로 패스워드 인증절차없이 바로 로그인하는 예를 보겠다.
A 서버(192.168.0.100)의 bbb 계정에서 ------> B 서버(192.168.0.110)의 aaa 계정으로 접속 |
접속을 허용하기 위하여 B서버에는 다음과 같은 설정이 되어 있어야 한다. 즉, B서버내의 aaa의 홈디렉토리인 /home/aaa디렉토리에 .rhosts파일이 이와같이 설정되어 있어야한다는 의미이다. 즉, 원격서버에서 B서버의 aaa계정의 홈디렉토리(/home/aaa)로 접속하기 위해서는 .rhosts파일내에 원격서버의 IP주소인 192.168.0.100과 계정명이 설정이 되어 있어야하며 이설정의 의미는 192.168.0.100서버의 bbb계정에서 이 서버의 aaa홈디렉토리로의 rlogin 원격접속을 허용한다는 의미가 된다.
$ cat .rhosts |
.rhosts파일에 설정된 “192.168.0.100 bbb”이라는 설정은 192.168.0.100(A서버)의 bbb이라는 계정에서 B서버의 aaa계정으로 패스워드 인증절차 없는 원격로그인을 허용하겠다라는 설정이다.
여기서 한가지 주의하실 것은 .rhosts파일의 퍼미션을 반드시 600으로 설정하셔야한다. .rhosts파일의 퍼미션이 600으로 설정하는 이유는 다른 사용자들이 이 파일의 내용을 함부로 볼 수 없도록 설정하기 위한 일종의 보안설정이다.
$ ls -al .rhosts |
B서버의 /etc/hosts.allow파일에서 아래와 같이 192.168.0.100 서버에 대한 허용을 해둬야 한다.
$ cat /etc/hosts.allow ALL : 192.168.0.110 |
그리고 B서버내의 /etc/xinetd.d/rlogin파일의 설정은 다음과 같다.
$ cat /etc/xinetd.d/rlogin |
자, 그럼 이제 모든 준비가 끝났으므로 A서버에서 B서버로 패스워드 인증절차 없이 rlogin을 이용하여 바로 원격로그인하는 예를 보겠다. rlogin명령어로 원격서버로 접속하는 명령의 형식은 다음과 같다.
$ rlogin -l B서버의계정명 B서버의IP주소 or $ rlogin -l B서버의계정명 B서버의IP도메인 |
192.168.1.100(A서버)의 bbb이라는 계정에서 192.168.0.110서버(B서버)의 aaa계정으로 rlogin접속에 성공한 예입니다.
A서버(bbb):/home> rlogin -l aaa 192.168.0.110 |
주의깊게 보실 것은 A서버의 bbb이라는 계정이 B서버의 aaa이라는 계정으로 rlogin접속을 패스워드 인증절차없이 바로 원격로그인을 하고 있다는 것이다. 그리고 접속에 성공한 이후에 id라는 명령어로 B서버의 aaa이라는 것을 확인하였다.
이와같이 패스워드 인증절차 없이 원격로그인을 수행하기 위해서 rlogin을 이용하였으며 rlogin과 같은 r-commands명령어들이 정상적인 수행을 위해서는 몇가지 설정이 필요하다는 점도 배워보았다.
r-commands명령어들의 보안적인 부분을 보완하기 위하여 반드시 이 설정들이 정상적으로 설정되어 있어야만 가능하다는 점을 꼭 기억하시기 바란다.
# rsh 명령어
Remote Shell이라고 하며, Linux 병렬처리 시스템을 사용하다 보면 동시에 원격으로 파일을 삭제/복사/이동 할 경우가 생기는데, 이때 rsh를 사용하면 된다.
사용 형식)
- 다른호스트로 로그인하기 : rsh 호스트명 - 다른호스트 명령 실행하기 : rsh 호스트명 "명령" |
예제)
rsh cluster2 : cluster2 호스트에 로그인 rsh cluster2 ls : 로그인하지 않고 cluster2 호스트에서 ls 명령 실행하기 rsh cluster2 "cp file1 file2" : cluster2 호스트에서 파일 카피하기 |
# rcp 명령어
rcp는 원격 호스트의 파일을 복사하는 명령어이다. 환결설정 파일에서 xinetd관련 설정파일은
/etc/xinetd.d/rlogin, /etc/xinetd.d/rsh 파일에서 disable = no 로 설정만 해주면 된다.
(별도 /etc/xinetd.d/rcp 파일이 필요없다.)
사용 형식)
$ rcp [-옵션] 파일1 파일2 $ rcp [-옵션] 파일... 디렉토리 |
옵션)
-p : 원 파일의 수정 시간(modification)과 모드(mode)를 그대로 보존한 채로 복사한다 -r : 디렉토리를 지정할 경우 서브 디렉토리까지 함께 복사한다. |
원격 호스트에 파일을 복사한다. 예를 들어 a1.aaa.com이라는 시스템의 test.txt 라는 파일을
b1.bbb.com 시스템의 /home/bbb 디렉토리 아래에 복사하려면, a1.aaa.com에서
rcp test.txt b1.bbb.com:/home.bbb 라고 명령을 내리기만 하면 된다. cp와 똑같다고 생각하면 된다.