Scp 패스워드 자동입력 - scp paeseuwodeu jadong-iblyeog

보통은 ssh나 scp를 사용할 때 패스워드 없이 로그인하려면 sshkey를 사용해야 하지만 가끔은 번거로울 때가 있습니다.

이럴 때 패스워드 입력 없이 사용하고 싶으면 sshpass 로 아래와 같은 방법으로 사용할 수 있습니다.

sshpass 설치하는 방법

  • ubuntu/debian : apt-get install sshpass
  • centos/fedora : yum install sshpass
  • mac
    • macport : port install sshpass
    • homebrew :
brew install //raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

바로 패스워드를 지정하는 방법

sshpass -p "password" scp -r :/some/remote/path /some/local/path

패스워드를 표시하지 않고 파일로 지정하는 방법

sshpass -f "/path/to/passwordfile" scp -r :/some/remote/path /some/local/path

## 192.168.10.99 서버 1. RSA 2048 비트의 key 쌍을 생성 ssh-keygen -t rsa -b 2048 2. ssh-copy-id 명령어로 공개키를 연결할 서버에 전송 ## 키값을 넘길경우 아래와 같이 하면 root의 패스워드를 물어보는데 ## root로 접속되게 안되어 있는 경우가 많다. ## 그럴 경우 그 아래에 계정@IP를 넣어서 넘겨준다. ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.10.7 ## 192.168.10.7 서버 ssh-copy-id -i ~/.ssh/id_rsa.pub ## 제일 편한 방법(다수의 서버 pub값을 하나의 authoried_keys에 넣게 되는 경우) 본인 서버의 id_rsa.pub를 열어서 TEXT를 복사한다. 접속할 서버에 제 계정 /home/theswice/에 .ssh폴더를 생성한 후 authorized_keys 파일을 만들 후 아까 복사한 TEXT를 붙여 넣는다. 3. authorized_keys를 다른 계정이 읽고 쓸수 없게 600 mode(소유자만 rw 가능) 로 전환 chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys 4. ssh 개인키 복호화 1) 개인키 암호화 ( openssl 명령어로 id_rsa의 암호화 해제 ) cp ~/.ssh/id_rsa ~/.ssh/id_rsa.enc openssl rsa -in ~/.ssh/id_rsa.enc -out ~/.ssh/id_rsa chmod 0400 ~/.ssh/id_rsa 5. scp 를 사용하여 암호없이 파일 복사가 되는지 확인 ## 192.168.10.99 서버 scp test.csv :/data/theswice/

bash 스크립트에 scp 작업을 작성하고 cron으로 예약을 걸었다.


❌접속 거부

Permission denied, please try again.^M Permission denied, please try again.^M : Permission denied (publickey,password).^M

아차, scp를 사용할 땐 항상 원격 pc의 접속 비밀번호를 입력해주어야 했다.

쉘 스크립트 안에서도 ssh 비밀번호 입력을 자동으로 할 수 있는 도구가 있다.


🔆sshpass

sshpass는 비대화식 ssh 암호 제공 툴이다.

일반적으로 linux에서 ssh 접근을 하면 키보드에 직접 암호를 타이핑하여야 한다(대화형 모드). sshpass는 비-대화형 모드에서 ssh에 암호를 제공하여 쉘 스크립트에서도 ssh를 이용할 수 있도록 한다.

ssh는 tty(TeleTYpewriter)를 사용하여 사용자가 실제로 대화형 모드 사용자에게서 비밀번호가 입력됐는지 확인한다. sshpass는 tty에서 ssh를 실행하여 대화 모드에서 암호를 입력받은 것처럼 속여 자동으로 로그인할 수 있다.

sshpass는 일반적으로 ssh 명령에서 사용되지만, ssh 암호 프롬프트를 사용하는 다른 명령에서도 사용할 수 있다.


💡사용법

sshpass [-p 패스워드 | -f 패스워드를 저장한 파일] ssh "ssh 파라미터"예1. 비밀번호 직접 입력 (with ssh)!#/bin/bash sshpass -p passwd ssh 예2. 비밀번호가 저장된 파일을 읽기 (with scp)!#/bin/bash sshpass -f passwd.txt scp :/src /dst

개요

ssh 나 scp 를 사용할 경우 매번 암호를 넣어서 사용해야 하므로 자동화가 필요한 작업을 ssh 를 통해 수행할 경우 불편하다.

ssh 의 인증방식을 public-key 로 하고 서버에 등록해서 사용하면 암호를 입력하지 않고 자동으로 로그인 할 수 있다.

설정

  1. $HOME/.ssh 폴더에 public(id_rsa.pub), private(id_rsa) ssh 키 쌍이 없을 경우 ssh-keygen 명령어로 RSA 2048 비트의 key 쌍을 생성한다. 

    ssh-keygen -t rsa -b 2048

    CODE

  2. ssh-copy-id 명령어로 공개키를 연결할 서버에 전송

    ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host

    CODE

  3. ssh-copy-id 가 없거나(Windows ) ssh-copy-id 실행이 어려울 경우 원격지에 로그인 한 후에 수동으로 공개키를 복사한다.

    ## Remote 에 공개키 복사  scp id_rsa.pub myid@remote-host:/home/myid/ ## 원격 서버에 로그인후에 전송한 공개키를 authorized_keys 에 등록 cat id_rsa.pub >> ~/.ssh/authorized_keys

    BASH

    4. authorized_keys를 다른 계정이 읽고 쓸수 없게 600 mode(소유자만 rw 가능) 로 변경한다.

    chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys

    CODE

    다른 이가 읽을수 있도록 퍼미션이 설정되어 있으면 client 에 별다른 오류 메시지 없이 로그인에 실패하니 꼭 확인 필요.

    ssh 로그인 실패 원인은 /var/log/secure 로그를 조회해서 확인 가능


ssh 개인키(private key) 복호화
 

  1. ssh-keygen 으로 공개키/개인키 쌍을 생성하면 개인키가 암호화되어 있다. 사용할 때 마다 암호를 입력해야 하므로 암호화된 개인키를 복호화 해야 한다. openssl 명령어로 id_rsa의 암호화를 풀 수 있다.

    cp ~/.ssh/id_rsa ~/.ssh/id_rsa.enc openssl rsa -in ~/.ssh/id_rsa.enc -out ~/.ssh/id_rsa

    CODE

    개인키의 복호화 해제시 개인키 파일이 유출되면 피해를 입을 수 있으니 file 을 다른 계정이 읽을수 없게 하고(chmod 0400 ~/.ssh/id_rsa) 유출에 주의해야 한다.

사용

  1. scp 를 사용하여 암호없이 파일 복사가 되는지 확인

    scp lesstif@myhost:/home/lesstif/mydata e:\backup

    CODE

    Windows Note

    Window 일 경우 msysgit 에 포함된 scp는 -i 옵션을 이용하여 명시적으로 identity_file을 지정해 줘야 할 수도 있다.

    scp -i c:\Users\lesstif\.ssh/id_rsa lesstif@myhost:/home/lesstif/mydata e:\backup

ssh 자동 로그인이 안 될때 해결방법

1. file permission 확인

.ssh 디렉토리와  authorized_keys 파일의 권한 설정 확인 (설정의 5번 항목 참고)

  • //www.openssh.org/faq.html#3.14

2. SELinux context 확인

~/.ssh/authorized_keys 에 public key 를 추가했으나 자동 로그인이 안 됨 참고

Ref

  •  //www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/ 

Toplist

최신 우편물

태그