서버 Server

shell script에서 비밀번호 입력 여부 없이 scp 사용 하는 법

은둔한량 2016. 10. 11. 13:49
반응형
######################################################################################
[방법 1] - 공개키 이용
######################################################################################




@@@@ 계정은 userId 으로 실행함.

A (192.168.1.10) 서버 : test.txt 라는 파일을 가지고 있는 서버
B (192.168.1.20) 서버 : A 라는 서버에서 파일을 받기 위한 서버

1. keygen 생성 - A 서버 설정 (test.txt 라는 파일을 가지고 있는서버)

~]# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/userId/.ssh/id_dsa): Enter 
Enter passphrase (empty for no passphrase): Enter                  
Enter same passphrase again: Enter
Your identification has been saved in /userId/.ssh/id_dsa.    -> 개인키
Your public key has been saved in /userId/.ssh/id_dsa.pub.  -> 공개키
The key fingerprint is:
99:d8:9f:78:99:91:91:20:b5:8b:ed:2e:37:ac:5d:91 userId@route.com

2. B라는 서버로 id_dsa 파일을 전송한다. (차후 삭제..) - A 서버 설정 (test.txt 라는 파일을 가지고 있는서버)

~]# scp /userId/.ssh/id_dsa.pub userId@192.168.1.20:/temp/
userId@192.168.1.20's password:
id_dsa.pub 100% 604 0.6KB/s 00:00
-----------------------------------------------------------


3. B (192.168.1.20) 서버로 접속한다. - B 서버 설정

userId ]# ls
id_dsa.pub

4. authorized_keys 라는 파일을 만든후 내용을 추가한다. B 서버 설정
==> authorized_keys 파일이 다른 컴퓨터의 키를 저장하고 있을 수 있기때문에, 파일에 이미 내용이 있다면 (새파일을 덮어쓰지않고) 공개키 파일 내용을 뒤에 추가해야 한다.


userId ]# cat id_dsa.pub >> /userId/.ssh/authorized_keys
userId ]# rm id_dsa.pub

5. 파일을 재확인한다. - B 서버 설정

userId ]# cat /userId/.ssh/authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBAMVz/0dkViLOfLg7aXSwMKFA9hx+zYKpidMhGAtYbrKni3pfy1w3DaZ/f8/
/e4LAb5ICUrMg== userId7@192.168.1.xxx

6. 보안을 위해 퍼미션을 변경한다. - B 서버 설정

userId]# chmod 700 /userId/.ssh/
userId]# chmod 644 /userId/.ssh/authorized_keys

7. 마지막으로 테스스틀 해본다. (비밀번호 입력 없이 전송)- A 서버 설정 (test.txt 라는 파일을 가지고 있는서버)
A 서버에서 B 서버로의 파일 업로드시도

userId ]# scp test.txt 192.168.1.20:/userId
test.txt 100% 0 0.0KB/s 00:00




######################################################################################
[방법 2] - sshpass를 사용한다.
######################################################################################

2. rpm -ivh --nodeps --force *.rpm -> unpack
3. sshpass -p "userId" ssh -o  StrictHostKeyChecking=no  userId@175.126.33.203; -> ssh connect
4. exit; -> exit
5. sshpass -p "userId" scp /var/lib/jenkins/jobs/seller-dev/workspace/target/seller.war userId@175.126.33.203:/  ->비번no scp !!


######################################################################################
[방법 3] - expect 를 사용한다.     http://visu4l.tistory.com/167
######################################################################################

 

반응형