最近發現一個很嚇人的事情,備份服務器里的備份目錄下竟然沒有備份文件,仔細一看原來是scp命令需要密碼的問題。之前建立過信任關系,可能是因為修改了root密碼,不成功了。下面說下具體操作。
通常用scp命令通過ssh獲取對方linux主機文件的時候都需要輸入密碼確認,不過通過建立信任關系,可以實現不輸入密碼。
這里假設需要備份的服務器 S 的IP:192.168.0.1
用作備份的服務器 B 的 IP:192.168.0.2
需要從S免密碼輸入復制文件至B。
1. 在服務器 S 上執行如下命令來生成配對密鑰:
ssh-keygen -t rsa
按照提示操作,注意,不要輸入passphrase,因為我的之前已經操作過,所以還提示了是否覆蓋,輸入 "y"回車就可以。其他提示信息如下
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ff:8e:85:68:85:94:7c:2c:46:b1:e5:2d:41:5c:e8:9b root@localhost.domain
2. 將 /root/.ssh/ 目錄中的 id_rsa.pub 文件復制到 服務器 B 的 /root/.ssh/ 目錄中,並改名為 authorized_keys。
scp .ssh/id_rsa.pub root@192.168.0.2:/root/.ssh/authorized_keys
以后從服務器 S scp 到服務器 B 就不需要密碼了。
3.使用此方法需要注意:復制的兩台計算機需要用相同的賬戶名,這里都是用的root。為了安全起見,需要在兩台機器中創建相同的賬號,然后在服務器 S 上用 su 命令切換至該賬號下,然后執行第1步,第2步中復制文件時可能 ~/.ssh/ 目錄並不存在,需要手動創建。
在第2步中如果機器中已經存在authorized_keys文件,則需注意,這個文件可以包含多個SSH驗證信息,這時可用 cat >> 命令將驗證文件內容附加上去。
現在服務器 S 上執行腳本 scp ~/.ssh/id_rsa.pub root@192.168.0.2:/root/.ssh/s.pub
然后在服務器 B 上執行 cat ~/.ssh/s.pub >> ~/.ssh/authorized_keys
最后可以用個小的文本文件試試。
在服務器 S 上執行
touch ~/test
scp ~/test root@192.168.0.2:/root/
在服務器 B 上用 ls查看是否成功,其實剛才在服務器 S 上執行 scp 的時候已經提示傳輸成功了。