Linux
如何使用公鑰認證在伺服器之間建立 ssh 連接
我正在設置一個連續集成(CI)伺服器和一個測試 Web 伺服器。我希望 CI 伺服器能夠通過公鑰身份驗證訪問 Web 伺服器。在 Web 伺服器中,我創建了一個使用者並生成了密鑰
sudo useradd -d /var/www/user -m user sudo passwd user sudo su user ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/var/www/user/.ssh/id_rsa): Created directory '/var/www/user/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /var/www/user/.ssh/id_rsa. Your public key has been saved in /var/www/user/.ssh/id_rsa.pub.
但是另一方面,CI伺服器將密鑰複製到主機但仍然詢問密碼
ssh-copy-id -i ~/.ssh/id_rsa.pub user@webserver-address user@webserver-address's password: Now try logging into the machine, with "ssh 'user@webserver-address'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting.
我檢查了 Web 伺服器,CI 伺服器公鑰已復製到 Web 伺服器 authorized_keys 但是當我連接時,它會詢問密碼。
ssh 'user@webserver-address' user@webserver-address's password:
如果我嘗試使用 root 使用者而不是我創建的使用者(兩個使用者都使用複制的公鑰)。它與公鑰連接
ssh 'root@webserver-address' Welcome to Ubuntu 11.04 (GNU/Linux 2.6.18-274.7.1.el5.028stab095.1 x86_64) * Documentation: https://help.ubuntu.com/ Last login: Wed Apr 11 10:21:13 2012 from ******* root@webserver-address:~#
您的問題說您想從 CI 伺服器登錄到網路伺服器。但是你說你在網路伺服器上創建了密鑰。我不確定這只是一個誤解還是一個錯誤的類型。
下面簡要概述了使用密鑰從 CI 伺服器啟用登錄到 Web 伺服器所需的操作:
- 在 CI 伺服器上創建公鑰/私鑰對
- 將密鑰 ( ) 的公共部分複製
id_rsa.pub
到網路伺服器上,並將其複製到~/.ssh/authroized_keys
您要以 ( 等) 身份登錄的每個使用者的文件root
中user
。我通常只是scp
用來將文件複製到伺服器上。如果您有多個要用於每個使用者的密鑰,請將它們附加到authorized_keys
. 否則,如果這是該使用者的唯一鍵,您只需重命名id_rsa.pub
為authorized_keys
.- 確保
.ssh
文件夾的權限為 644chmod 644 .ssh
和授權密鑰文件的權限為 700 和chmod 700 .ssh/authorized_keys
.- 嘗試使用您已將公鑰複製到網路伺服器上的使用者名從 CI 伺服器登錄網路伺服器,例如
ssh user@webserver
它不應該要求輸入密碼(這是假設您已遵循@khaled 關於 sshd 配置文件的建議,但預設設置通常設置為允許在密碼之前進行密鑰身份驗證)。