[쉘프로그래밍]scp 접속시 root패스워드 미리입력?
글쓴이: mnnclub / 작성시간: 금, 2005/05/20 - 7:23오후
안녕하세요. ;)
몇십대의 서버에 scp로 dmesg를 가져오려고 하는데
쉘로 루프로 돌리다가, 일일이 패스워드 입력하기가
힘들어서 아래처럼 쉘을 짰는데 잘되지가 않네요..
------------------------------------------------------------------
#!/bin/sh
root_pass = $1
scp test.com:/var/log/dmesg . >> echo "$root_pass"
------------------------------------------------------------------
웁스.. 쉘프로그래밍 공부좀해야지원 --+
간단한 조언 부탁드립니다^^;;
Forums:
Re: [쉘프로그래밍]scp 접속시 root패스워드 미리입력?
public-key 를 이용한 접속을 이용해보세요.
ssh-agent, ssh-add 를 이용하면 인증과정을 한번에 하실수 있습니다.
wiki.kldp.net나 kltp.kldp.org 에서 찾아보시면 관련자료가 있을듯...^^
정말감사합니다.
kltp.kldp.org 에서 ssh-keygen 관련문서찾으니 바로나오네요..
해결되었습니다^^ 감사합니다 idccc 님
----------------------------------------------------------------------------------
rsync 이놈을 이용하여 백업이나 다른 서버와의 데이터 동기화를
하기가 꼭 필요할 경우가 있다. 물론 테이프 백업을 사용할때는
다른 툴이 좋겠지만. 어디까지나 동기화 정도의 용도로는 좋을듯 하다.
rsync-2.5.7을 아래 링크에서 다운로드한다.
http://samba.org/rsync/download.html
소스를 압축해제
tar zxfp rsync-2.5.7.tar.gz -C /var/tmp
cd /var/tmp/rsync-2.5.7
컴피그
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/share/man \
--disable-ipv6
컴파일
make
find /* > /root/rsync1
컴파일 설치
make install
rsync 로그 설정
echo "local3.info /var/log/rsyncd.log" >> /etc/syslog.conf
tocuh /var/log/rsyncd.log
rsync 설정 파일 생성(동기화할 소스가 있는 서버만 설정)
/etc/rsyncd.conf 파일을 생성
-- 전역 설정 --
motd file = /etc/rsync.motd
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
max connections = 3
syslog facility = local3
-- 디렉토리별 설정 --
[data]
path = /home/vitro
comment = vitro-syncdata
uid = nobody
gid = nobody
use chroot = yes
read only = yes
hosts allow = 접속 허용할 아피
timeout 600
rsync로 접속시 환영 메시지 설정
echo 'Vitro rsync server
sysadmin = vitro@vitro.pe.kr' > /etc/rsync.motd
만약 ssh 를 사용하지 않고 rsync의 xinetd 서비스를 이용하려면
아래처럼 xinetd 서버스 파일을 생성하고
ssh 만을 이용시는 아래 파일을 생성하지 않는다.
---- rsync xinetd 이용시 시작 -----
echo 'service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}' > /etc/xinetd.d/rsyncd
/etc/rc.d/init.d/xinetd restart
---- rsync xinetd 이용시 끝 -----
find /* > /root/rsync2
diff /root/rsync1 /root/rsync2 > /root/rsync-install
-------------------------------------------------------
업데이트를 해야 하는 데이터를 가지고 있는(클라이언트쪽) 리눅스쪽 설정
-------------------------------------------------------
이제 rsync 서버에 패스워드 없이 접속하기 위해서 공개키를 생성한뒤
공개키를 rsync에 전송하고 클라이언트 쪽에서 batchmod 로 접속가능하게 설정한다.
아래의 작업을 거쳐서 그것이 가능하게 한다.
ssh를 사용해서 할것이기 때문에 우선 백업 유저를 하나 추가한다.
useradd vitro
passwd vitro
서버쪽에도 똑같은 유저가 하나 있어야 한다. 없다면 하나 추가해라.
그리고 ssh-key 를 생성한다.
su - vitro
ssh-keygen -d
여기서 패스워드를 두 번 물어보는데... 그냥 엔터만 친다.(그래야 비번없이 접속가능하다)
만들어진 vitro의 공개키를 rsync 서버에 보낸다.
scp -p .ssh/id_dsa.pub vitro@호스트명:~/.ssh/authorized_keys2
rsync 서버의 패스워드를 입력하면 공개키가 전송이 된다.
vi /etc/ssh/ssh_config 파일을 열어서
Host rsync 서버 아피 <-- 이부분 수정
ForwardAgent no
ForwardX11 no
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
FallBackToRsh no
UseRsh no
BatchMode yes <-- 이부분 수정
CheckHostIP no
StrictHostKeyChecking no
IdentityFile ~/.ssh/identity
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/id_rsa
Port 22
Protocol 2,1
Cipher blowfish
EscapeChar ~
그리고 나서 sshd 재시작
/etc/rc.d/init.d/sshd restart
이제 크론 파일에 클라이언트쪽 크론에 동기화 명령 등록한다.
백업 유저의 권한으로 돌려야 패스워드 질의를 하지 않는다.
/etc/cron.hourly/ssh-rsync.sh 파일을 아래의 내용으로 생성
su - vitro -c 'rsync -azrt -e ssh --delete vitro@rsync서버아피:"/home/vitro/" /home/target'
chmod 550 /etc/cron.hourly/ssh-rsync.sh
이제 동기화가 제대로 되는지 확인해보면 된다.
댓글 달기