서버에서 내 파일 서버로 파일 복사: 자동화는 어떻게?

** cron 작업과 연관하려면 다음 글 참고.


바로 이 글이 저장된 웹서버를, 유사 시를 대비해 잘 보관하고 싶다.
일천한 지식으로 쉽게 생각할 수 있는 방법은 ‘rsync 를 통해 내 PC 로 복사하기’ 정도인데.. 여기에 ‘인증’이 큰 걸림돌이 된다.

rsync 로 내 파일서버로 접근하는 방법엔 몇가지가 있겠지만, 현재 내 서버 상황에선 ssh 가 거의 유일한 해법이다.
문제는.. ssh 로 접속하려면 passphrase 를 사용해야 하고, 이걸 수동으로 입력해야하니 ‘자동화’를 하기가 어렵다는데 있다.

cron 작업으로 rsync 를 사용하여 파일서버에 접속한 후, 필요한 파일들을 복사하게끔 하는게 일단 기본이다. 여기에, 만약 파일 서버가 켜있지 않을 경우, WOL 기능을 사용하여 서버를 켠 뒤, 복사하고, 서버를 끄는 기능까지 추가할 수도 있겠다.

하지만, 정작 rsync ssh 인증 문제를 풀 방법이 떠오르질 않았다.
그리하여 이리 뒤지고, 저리 찾아보고 하는 와중에, keychain, ssh-agent 등을 보게 되었다.

인터넷에서 떠도는, 저 유틸리티들(keychain)을 사용한 방법을 써봤지만, 거기에도 한가지 문제가 있었다. 재부팅을 하면 적어도 한번은 로그인을 해줘야 한다는, 큰 번거로움(?)이 있었다.

왜 그런지에 대해선 잘 이해가 되지 않는다.
Gnome 이나 KDE 에서도 비슷한 상황이 있긴 한데, 거기선 어쨌든 사용자가 로그인을 하긴 해야 한다. 로그인을 하며 비밀번호를 입력하고, 그 비밀번호를 사용하는 키관리자가 ssh passphrase 도 관리하는 형식으로 보인다.

허나, Headless server 는 상황이 다르다. 적절한 방식을 아직 찾질 못했다.

그런 여러가지 방법들을, Thomas Nyman 이라는 분이 잘 정리를 해줬다.

keychain 에 대한 여러 글들을 봤지만, 그냥 그렇게 하라고만 할 뿐, 그게 어떤 역할을 하는 지에 대해서까지 설명한 글은 못봤는데, 이 글엔 이렇게 정확히 표현이 돼 있다.

keychain is a small utility which manages ssh-agent on your behalf and allows the ssh-agent to remain running when the login session ends. On subsequent logins, keychain will connect to the existing ssh-agent instance. In practice, this means that the passphrase must be entered only during the first login after a reboot. 

ssh 를 사용할 때, 패스프레이즈를 처음 한번만 입력하게 하려면 ssh-agent 의 도움을 받아야 한다. 이 ssh-agent 는, 로그인한 세션에서만 유효하고, 로그아웃후 재로그인하면 다시 실행해줘야 한다.
이래서는 rsync 자동화에 전혀 도움이 되지 않는다.

ssh-key with passphrase 에 대해서만 간단하게 정리하자면..

  • ssh-agent : 로그인 한 동안에만 패스프레이즈를 기억한다.
  • ssh-ident : ssh-agent 보다는 기능이 많아 보이고, 로그아웃 후에도 Passphrase 를 기억한다.
  • keychain : 로그 아웃 후에도, 즉 재부팅하기 전에는 계속 기억한다.
  • expect : passphrase 를 스크립트에 직접 넣어 사용할 수 있다.

결국, 방법은 두가지다.

현재 서버 설정이 매일 재부팅을 하게끔 되어 있으므로, rsync 가 실행되기 전에 한번 로그인하여 keychain 이나 ssh-ident 를 실행시키는 방법과,
sshpass 나 expect 를 사용하여, 패스프레이즈를 스크립트에 하드코딩하는, 다소 무식한 방법. 이 방법에 대해 Nyman 은 이렇게 표현했다.

from a security perspective, this is hardly better than having a passwordless ssh-key.

ssh-key 에 패스워드 할당을 하지 않고 사용하는 방법과 비교해서, 더 나을 게 없다는 얘기. 그거나, 그거나.

과연, 뭐가 제일 적당할런지..?


** 팍팍한 현실에서, 내가 선택한 대안은 이랬다.

Author: 아무도안

안녕하세요. 글 남겨주셔서 고맙습니다.