強制 ssh 登錄密碼
我有兩台裝有 CentOS6 和 CentOS7 的伺服器。
它們都具有 SSH 訪問權限。我的客戶端電腦有 Ubuntu 16.04。
對於 CentOS6,我可以使用命令登錄
ssh -i ~/.ssh/serv1 root@serv1
但命令
ssh root@serv1
提示密碼。對我來說沒問題。
對於 CentOS7,我可以使用命令登錄
ssh -i ~/.ssh/serv2 root@serv2
但命令
ssh root@serv2
DO NOT 提示密碼。我也可以登錄成功。
當我從另一台電腦上執行 ‘ssh root@serv2’ 時,ssh 會提示密碼,沒關係。
問題是:為什麼我可以在沒有密碼且沒有 ssh 密鑰的情況下使用命令登錄到 serv2
ssh -i ~/.ssh/serv2 root@serv2
?
我找不到負責它的選項,也找不到 CentOS7 的標準行為。
告訴我是否需要其他資訊。
這是因為您將身份(公鑰)添加為 serv2 中的授權密鑰
/root/.ssh/authorized_keys
。有關此文件的更多資訊,請參閱man sshd
部分AUTHORIZED_KEYS FILE FORMAT
。您的預設身份儲存在
~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_rsa, id_ed25519
以 .pub 結尾的文件和類似文件中,儲存各自的公鑰。當您嘗試登錄到任何遠端 ssh 而不指定“-i”選項時,這些將提供給遠端伺服器。如果遠端伺服器將其中任何一個儲存在其下,~/.ssh/authorized_keys
那麼您可以使用該密鑰登錄(即無需密碼)。因為基於密碼和基於公鑰是授權遠端使用者的兩種不同方法。當您指定“-i”選項時,您只是提供了一個不同的公鑰,儲存在該文件中。
此外,您始終可以使用“-v”選項執行 ssh,以獲取有關遙控器接受哪個密鑰方法/公鑰的更多詳細資訊。就像在這個例子中一樣:
debug1: Next authentication method: publickey debug1: Offering RSA public key: /home/nstorm/.ssh/id_rsa debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password debug1: Offering ECDSA public key: /home/nstorm/.ssh/id_ecdsa debug1: Server accepts key: pkalg ecdsa-sha2-nistp256 blen 104 debug1: Authentication succeeded (publickey). Authenticated to 172.16.2.1 ([172.16.2.1]:22).
如果您不想在沒有使用 ‘-i’ 選項設置非預設身份的情況下在沒有密碼的情況下登錄 serv2,則必須刪除儲存在 serv2 上的預設身份
/root/.ssh/authorized_keys
。它應該與您的本地~/.ssh/id_*.pub
密鑰在同一行。