Linux

如何讓 2 台 linux 機器在不詢問密碼的情況下相互接受 ssh 連接

  • November 5, 2012

我需要創建一個 cron 腳本,它將所有日誌從一台機器 scp 到日誌解析機器,但是當我 scp 時,我被要求插入密碼。通常,當我使用 Putty 連接到伺服器時,我使用pageantPutty 來允許代理轉發,當我選擇要連接的機器時,它會打開一個 putty 視窗並讓我直接進入 shell 而無需插入密碼。這發生在我將我的 rsa 公鑰插入每台機器上的 .ssh/authorized_keys 文件之後。

我想在兩台伺服器之間做同樣的事情。

編輯:我不知道為什麼它被否決……我認為這是一個合理的問題。請告訴我我做錯了什麼:

[root@search-uk-1 .ssh]# ssh-keygen -t rsa
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:
ca:ab:4d:95:a4:ee:47:67:0c:e1:23:f3:73:46:67:7e root@search-uk-1.int.incredimail.com
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|        .        |
|       ...       |
|      oo+.. o    |
|      .+S= +     |
|     o o+ * . E  |
|      =. *   .   |
|     + ..        |
|    ..+.         |
+-----------------+
[root@search-uk-1 .ssh]# ssh-copy-id root@sawmill
root@sawmill's password:
Now try logging into the machine, with "ssh 'root@sawmill'", and check in:

 .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

[root@search-uk-1 .ssh]# ssh root@sawmill
Enter passphrase for key '/root/.ssh/id_rsa':
Last login: Mon Nov  5 11:32:33 2012 from search-uk-1.int.incredimail.com
[root@sawmill ~]# exit
logout
Connection to sawmill closed.
[root@search-uk-1 .ssh]# ssh root@sawmill
Enter passphrase for key '/root/.ssh/id_rsa':

即使我從 .pub 文件中複製 rsa 密鑰並將其粘貼到遠端機器 .ssh/authorized_keys 上,它仍然會不斷要求我輸入密碼。

謝謝

我很簡單。在機器上生成您的 rsa_idssh-keygen -t rsa

之後只需執行ssh-copy-id login@secondmachine輸入密碼即可。之後,您應該能夠在沒有密碼的情況下從一台機器登錄到另一台機器(如果您想在兩台機器上都沒有密碼登錄,那麼您應該在第二台機器上執行相同的步驟)。

但也許你應該考慮使用 rsync 來完成這項工作。使用環境變數 USER 和 RSYNC_PASSWORD 在 cronjobs 中使用 rsync 密碼非常簡單。把它放在你的腳本中


export USER=nameofrsyncuser
export RSYNC_PASSWORD=password

之後,任何 rsync 命令都將使用此變數。它更安全,因為 rsync 使用者不是系統使用者。您必須配置 rsync 伺服器,但這非常簡單。您可以通過在 rsync 配置中使用 host allow 指令來保護 rsync 共享。

引用自:https://serverfault.com/questions/445480