웹마스터 팁
rsync 와 ssh root 접속을 막고 인증키로만 백업하기
2015.11.25 14:21
rsync 를 사용하면서
root 계정을 막고 rsync 를 사용하는 방법을 질문한 사람이 있어서
다 같이 공유하면 좋을거 같아서 사용법을 간단히 올립니다.
먼저
sshd_config 파일에서
PermitRootLogin forced-commands-only
이렇게 설정을 바꿉니다.
즉 공개키의 명령만 실행하겠다는 의미입니다.
공개키 만드시는 방법은 다 아실거라 생각합니다.
예를 들어서
A서버(master.com/1.1.1.1) 에서 B(test.com/1.1.1.2) 서버로
rsync를 실행한다고 가정합니다.
B 서버에서
#>ssh-keygen -t rsa -b 2048 -f test.com-key
실행하면
test.com-key 와 test.com-key.pub 이렇게 생성이 됩니다.
test.com-key 는 /root/.ssh/test.com-key 를 두겠습니다.
test.com-key.pub 는 A서버의 /root/.ssh/authorized_keys
로 교체합니다.
그리고 나서 vi 나 기타 편집기로 열어서
원본
--------------------------------------------------------
ssh-rsa AAAXXXXXx ....XXXXX== root@test.com
---------------------------------------------------
추가본
--------------------------------------------------------
from="1.1.1.2",command="/root/validate-rsync" ssh-rsa AAAXXXXXx...XXXXXX== root@test.com
---------------------------------------------------
from 은 B 서버의 아이피 주소를 적습니다.
그런 다음에 validate-rsync 파일을 만듭니다.
퍼미션은 실행 퍼미션있어야 합니다.
------------------------------------------------------------------------
#!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac