/
scp, ssh, rsync 를 key 비밀 번호/암호 입력창 없이 사용하기

scp, ssh, rsync 를 key 비밀 번호/암호 입력창 없이 사용하기

개요

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
  2. ssh-copy-id 명령어로 공개키를 연결할 서버에 전송

    ssh-copy-id -i ~/.ssh/id_rsa.pub remote-host
  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

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

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

    다른 이가 읽을수 있도록 퍼미션이 설정되어 있으면 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


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

     

 


사용

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

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

    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번 항목 참고)


2. SELinux context 확인

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

Ref

Related content

~/.ssh/authorized_keys 에 public key 를 추가했으나 자동 로그인이 안 됨
~/.ssh/authorized_keys 에 public key 를 추가했으나 자동 로그인이 안 됨
More like this
ssh Authentications method 설정
ssh Authentications method 설정
More like this
ssh 개인키 암호 변경/해제하기(change ssh private key pass phrase)
ssh 개인키 암호 변경/해제하기(change ssh private key pass phrase)
More like this
ssh-agent 가 private key 를 캐싱할 수 있도록 등록해 주는 ssh-add 명령어 사용법
ssh-agent 가 private key 를 캐싱할 수 있도록 등록해 주는 ssh-add 명령어 사용법
More like this
ssh 공개키에 있는 이메일 주소 변경하기(change email address in ssh pub key)
ssh 공개키에 있는 이메일 주소 변경하기(change email address in ssh pub key)
More like this
ssh 를 22번이 아닌 다른 포트 사용
ssh 를 22번이 아닌 다른 포트 사용
More like this