Linux 下用 SCP 無需輸入密碼傳輸檔案

lizhiqiang666發表於2020-01-26

最近發現一個很嚇人的事情,備份伺服器裡的備份目錄下竟然沒有備份檔案,仔細一看原來是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 的時候已經提示傳輸成功了。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章