Centos

強制 ssh 登錄密碼

  • April 12, 2022

我有兩台裝有 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密鑰在同一行。

引用自:https://serverfault.com/questions/861706