在 linux的ftp帳號同步 裡,
回答裡提及兩主機某檔案同步的方式,
可透過ssh或scp的方式,
在此測試如何免輸入帳密的方式將檔案複製或連線到另一主機中。
在 AHOST 主機裡產生金鑰:
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/USER/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/USER/.ssh/id_rsa.
Your public key has been saved in /home/USER/.ssh/id_rsa.pub.
The key fingerprint is:
25:27:12:0c:90:0f:9c:c7:c7:a0:63:3d:4b:d9:da:5c USER@AHOST
上述的4,5行直接按Enter
這個執行會產生一私鑰檔案id_rsa、
公鑰檔案id_rsa.pub,
兩個檔案都在 ~/.ssh 的目錄裡。
這只是產生金鑰的動作,
但並未自動做好所有的該有設定,
現在需到 ~/.ssh/ 的目錄,
產生一個與 id_rsa.pub 相同的 authorized_keys 檔案。
USER@AHOST:~$ cd ~/.ssh/
USER@AHOST:~/.ssh$ cat id_rsa.pub > authorized_keys
USER@AHOST:~/.ssh$ chmod 600 authorized_keys
現在測試自己連自己,就應不需要帳密而能直接連上:
USER@AHOST:~/.ssh$ ssh USER@AHOST
Enter passphrase for key '/home/brock/.ssh/id_rsa':
Last login: Sun Dec 3 11:53:26 2006 from 194.178.109.250
USER@AHOST:~$ exit
logout
Connection to AHOST closed.
如果可以如此的測試成功,
就可以進行以下步驟,
把必要檔案複製到 BHOST 主機,
這樣從 BHOST 主機就可以免帳號密碼、
透過 ssh 或 scp 到 AHOST 主機來。
USER@AHOST:~/.ssh$ cat id_rsa.pub | ssh BHOST 'cd .ssh; cat >> authorized_keys; chmod 600 authorized_keys'
USER@A's password:
現在從BHOST就可以免帳號密碼ssh或scp到AHOST。
所以把 原回答 的執行命令:
scp /etc/pure-ftpd/pureftpd.pdb USER@SERVER_B:/USER_HOME/pureftpd.pdb
scp /etc/pure-ftpd/pureftpd.passwd USER@SERVER_B:/USER_HOME/pureftpd.passwd
(當然,把這兩行指令做成一個script檔,
在產生FTP虛擬帳號後,執行一下這script,
兩台機器的FTP帳密就同步了)
就可以從AHOST免帳密的情況下,
把 ftp 的帳密檔同步到 BHOST 裡。
這是偷懶也免打 Passphrase 的作法,
(最上述4,5行直接按ENTER的動作)
如果不偷懶照標準步驟做,
在Passphrase有鍵入東西的話,
就每次連線也要鍵入這Passphrase才連得上,
這時就需要再加上使用 ssh-agent 的步驟,
來儲存 Passphrase,就可免key Passphrase,也安全兼顧。
詳細做法可參閱:
SSH 免密碼登入
Setting up SSH keys for access without a password