將多個 SSH 金鑰新增至新伺服器

將多個 SSH 金鑰新增至新伺服器

我知道我可以執行以下操作來複製 SSH 金鑰

ssh-copy-id [email protected]

但是當我部署新伺服器時,我需要向它授權多個 SSH 金鑰。有沒有辦法讓授權多個 SSH 金鑰變得更輕鬆?

答案1

閱讀 的手冊頁ssh-copy-id,似乎它應該從 ssh-agent 複製所有不接受登入的金鑰。因此,將所有金鑰對載入到 ssh-agent 中,然後ssh-add使用ssh-copy-id

如果這不起作用,您可以嘗試指定以下鍵ssh-copy-id

for i in ~/.ssh/*.pub; do
  ssh-copy-id -i $i user@host
done

如果這仍然不適合你,也許看看像 ansible 這樣的東西:

# sshkeys.yml
---
- hosts: all
  remote_user: foo
  tasks:
  - authorized_key:
      user: foo
      key: '{{lookup("file", item)}}'
    with_items:
    - id_rsa.pub
    - id_rsa_alternate.pub

使用如下:

ansible-playbook -i remote.host.com, -k sshkeys.yml

如果您選擇這條路線,請務必閱讀有關 ansible 的更多資訊。

答案2

介紹

這種方式比ssh 複製id 要好得多,因為您可以將金鑰複製給任何用戶,對於具有任何連接埠的ssh 伺服器,而不僅僅是22。金鑰,這些金鑰將被附加到authorized_keys 檔案中在伺服器上。確保authorized_keys.org 每行都有一個 ssh 公鑰。

您可以透過多種方式根據自己的喜好建立這些線條。我建議永遠不要忘記這個cat | ssh cat方法或類似的echo | ssh ssh cat方法,因為它們非常適合在遠端伺服器上寫入。cat SOMETHING | ssh SERVER "cat - > REMOTEFILE"或者您可以使用 echo 像這樣,echo "SOMETHING" | ssh SERVER "cat - > REMOTEFILE" 這些是在本地讀取某些內容然後將其寫入或附加到另一台伺服器上的完美方法。像這樣寫cat - > REMOTEFILE或這樣附加cat - >> REMOTEFILE

答案

cat authorized_keys.org | ssh -p 22 [email protected] "cat - >> /root/.ssh/authorized_keys"

或者

cat authorized_keys.org | ssh -p 22 [email protected] "cat - >> ~/.ssh/authorized_keys"

另外,如果您有 ssh 密鑰(一個 ssh 密鑰):

cat id_rsa.pub | ssh -p 22 [email protected] "cat - >> /root/.ssh/authorized_keys"

或者

cat id_rsa.pub | ssh -p 22 [email protected] "cat - >> ~/.ssh/authorized_keys"

這應該足以理解這一切。

更多資訊

注意:請閱讀下面我的評論,了解您不僅限於使用“root”。在這裡你可以看到它的所有部分都是可以修改的:

[input of ssh keys or keys (as long as new line sepearted)] | ssh -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"

獎金:假設 ssh 伺服器不允許密碼登錄,只允許 SSH 金鑰,但您想讓它知道更多金鑰。

  • [input of ssh keys or keys (as long as new line sepearted)] | ssh -i PRIVATE -p PORT USER@SERVER "cat - >> AUTHORIZEDKEY"
  • [輸入ssh 金鑰或金鑰(只要以換行符號分隔)]:這可以是具有1 個或多個公鑰的檔案的目錄,只要它們以換行符分隔或完整公鑰的回顯(或多個公鑰)公鑰,只要它們是新行分隔的 - 您可以使用“echo -e 'line1\nline2'”來使用 echo 分隔新行。
  • PRIVATE:如果您的 ssh 伺服器只允許某個金鑰進入,因為它僅配置了 ssh 金鑰驗證並且具有您的公鑰。然後指定該公鑰金鑰的私鑰
  • USER:您要連線並編輯其金鑰的使用者。如果您以 root 身分連線(例如:[電子郵件受保護]),您可以新增至任何人的金鑰 "cat - >> /home/anyuser/.ssh/authorized_keys" ,也可以新增至根金鑰 "cat - >> /root/.ssh/autorized_keys" 。但是,如果您以user1 身份連接,則只能更改user1 的密鑰“cat - >> /home/user1/.ssh/authorized_keys”或更簡單地“cat - >> ~/.ssh/authorized_keys”(最後一個適用於任何用戶)。
  • SERVER:您要連接的伺服器。在本例中是 server.com
  • PORT:伺服器上接受的 SSH 伺服器連接埠。通常是連接埠 22。
  • AUTHORIZEDKEY:這是授權金鑰的位置。我在用戶點中對此進行了介紹。這將是“/root/.ssh/authorized_keys”或“/home/user1/.ssh/authorized_keys”或“~/.ssh/authorized_keys”

相關內容