대개의 경우 내부망이라면 telnet과 ftp를 이용하겠지만 보안상의 이유로 혹은 기타의 이유로 내부망인데도 불구하고 ssh와 sftp를 써야하는 경우가 있다.(대외망은 아마도 대부분 telnet과 ftp를 사용하지 못할 거라 생각한다.)
이전에 ftp를 이용한 자동화에는 .netrc를 이용해서 자동화를 했는데(물론 .netrc를 사용한다는 것은 내 계정정보를 그냥 공개한다고 보면 된다.) sftp를 써야 하기 때문에 이런 기존의 자동화 방법을 적용할 수 없었다.
ssh, sftp 그리고 scp 등의 secure 툴(이 3가지 외에는 생각나는게 딱히 없다.)은 rsa를 이용해서 보안 로그인을 허용한다.
위의 .netrc를 이용하는 것보다는 훨씬 보안이 뛰어나다(라고 알고있다...;;).

먼저 제반사항으로는 당연히 secure 접속이 가능한 장비가 준비되어야 한다. ssh 설치 방법 등은 이 글에서 다루지 않는다.

sshd의 설정파일(/etc/ssh/sshd_config)에서 아래 부분을 수정한다. 기본적으로는 막혀있는 듯하다.
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

다음으로 접속하는데 쓸 rsa 키를 만들어보자.

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/fhan/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/fhan/.ssh/id_rsa.
Your public key has been saved in /home/fhan/.ssh/id_rsa.pub.

어디에 저장할지와 추가적인 보안키를 입력 받는데 필요없으면 입력하지 않아도 된다.
이제 $HOME/.ssh/id_rsa.pub 파일이 생겼다. 이 파일을 상대방의 장비에 authorized_keys란 이름으로 넣어주면 준비가 끝난다.
$ scp ~/.ssh/id_rsa.pub fhan@dev:~/.ssh/authorized_keys
이렇게 한 뒤에 scp를 다시 수행하면 패스워드를 물어보지 않는다. 혹 패스워드를 물어본다면 .ssh경로나 authorized_keys 파일의 권한을 700, 600으로 조정해보면 되기도한다.