Key-Authentication
添加額外的密鑰對進行身份驗證
我需要一個新的密鑰對用於允許登錄伺服器的附加主機(但由於安全原因,我不能共享現有的密鑰對)。
現在,我在伺服器上創建了一個可以正常工作的新對
ssh-keygen -t rsa -f newkey.key
,然後我將它們複製到客戶端並嘗試使用登錄,ssh user@server -i newkey.key
但它不會讓我進入,而是我得到:$ ssh user@server -i newkey.key Warning: Permanently added 'server' (ECDSA) to list ofknown hosts. Permission denied (publickey). $
為什麼會這樣,我該如何做?
newkey.key
權限設置為400
.
當人們嘗試設置基於密鑰的身份驗證時,我看到的最常見問題之一是他們忘記將密鑰對的公共部分添加到
authorized_keys
文件中。在
server.example.com
您生成公鑰/私鑰對時 -user@server:~/ $ ssh-keygen -t rsa -f newkey.key
根據需要設置密碼(或不設置密碼)。
然後將公開的一半放入
authorized_keys
文件中-user@server:~/ $ cat ~/.ssh/newkey.key.pub >> ~/.ssh/authorized_keys
然後將密鑰的私有部分複製到您的客戶端電腦,您應該能夠連接 -
user@client:~/ $ ls -1 .ssh authorized_keys config newkey.key user@client:~/ $ ssh -i ~/.ssh/newkey.key user@server
根據@Haxiel 和@RubberStamp(和我自己的)協議進行編輯,即不應將私鑰留在用於訪問的伺服器上。
請務必從用於連接的伺服器中刪除私鑰,除非您別無選擇。這是一個非常容易避免的安全問題。
密鑰應該在本地機器上生成,公鑰通過 scp 或 ssh-copy-id 複製到遠端機器…首選後一種選擇,因為它確保公鑰正確放置在遠端 ~/ .ssh/authorized_keys 文件以及對該文件的適當權限