我家裡有 ubuntu 伺服器,我使用 SSH 金鑰從筆記型電腦透過終端登入。很少,但主要是因為工作,我需要訪問此伺服器,但我不想在我的工作筆記型電腦上複製密鑰 - 我寧願只使用普通密碼。
因此,如果我從 ssh 設定檔啟用密碼登錄,即使筆記型電腦包含金鑰,它也會詢問我密碼,對吧?
有辦法阻止這種行為嗎?
謝謝。
答案1
使用兩個私鑰
使用相同的流程設定您的工作站(但是不是與設定筆記型電腦時相同的私鑰):
- 從來沒有充分的理由從其他機器複製私鑰。如果您尚未在工作站上產生新的私鑰,請立即執行此操作。同時產生對應的公鑰。在工作站上的終端機中,
類型:ssh-keygen -t rsa
- 將工作站的公鑰複製到伺服器。在工作站上的終端機中,
類型:ssh-copy-id [email protected]
(但使用您的實際使用者名稱和主機名,然後在要求時輸入您的密碼)。
這會將工作站的公鑰安裝到~/.ssh/authorized_keys
伺服器上該使用者的檔案中。
- 沒有第3步了。
細節
我認為你真正要問的是
- 我有一個 Ubuntu 伺服器(“家”)
- 我從我的個人筆記型電腦(「筆記型電腦」)登入我的 Ubuntu 伺服器
- 我還從我的工作電腦(「工作站」)登入我的 Ubuntu 伺服器。
這樣做的正確方法是什麼?
- 我想我可以簡單地從兩個地方使用相同的密碼登入。這不可能是正確的方式,因為每個人都說公鑰身份驗證比密碼好得多。(A)
- 我想我可以簡單地將私鑰從筆記型電腦複製到我的工作站。這不可能是正確的方法,因為每個人都說私鑰永遠不應該離開客戶端電腦。
人們牢記在心的是,伺服器上的一個帳戶只有一個用戶名,當然還有一個授權密碼。
像 ssh 這樣的公鑰系統比密碼系統更好:伺服器上的一個帳戶有一個使用者名,並且任意數量的授權公鑰,所有這些都在~/.ssh/authorized_keys
文件中列出。
(更多細節)。
答案2
即使密碼和基於密鑰的方法都可用,也可以強制您的筆記型電腦使用密鑰檔案。如果您目前正在使用 進行連接,請編輯並新增:ssh [email protected] -p 22
~/.ssh/config
Host your.host.tld
PreferredAuthentications publickey
這個設定檔可以讓你輸入更少的內容:
Host home
Hostname your.host.tld
User user
PreferredAuthentications publickey
Port 22
有了這個配置,你只需要ssh home
.
可以將基於密碼的登入限製到某個 IP 位址。在 中/etc/ssh/sshd_config
,您將有一行停用基於密碼的身份驗證:PasswordAuthentication no
。要啟用它以從某個 IP 登錄,您可以使用:
Match Address 12.34.56.78
PasswordAuthentication yes
我建議您即使在工作中也使用基於金鑰的身份驗證。它比基於密碼的身份驗證安全得多,因為它不能輕易被暴力破解。您可以為同一個帳戶擁有多個金鑰,這應該不是問題。
更多奇特的設定指令,請參閱手冊頁ssh_配置(5)。 (對於伺服器端,請參見sshd_配置(5))
答案3
不,至少在我的配置中,如果您啟用密碼身份驗證,它只會在您沒有密鑰時提示輸入密碼。
話雖如此,我永遠不會在暴露於互聯網的伺服器上啟用密碼身份驗證。