Ssh

為什麼基於 ssh 密碼的登錄會失敗?

  • November 26, 2019

我目前使用 ssh 密鑰連接到我的伺服器(Ubuntu 18.04)。我想允許(在特定的、有限的範圍內)使用密碼登錄的能力。

每當我嘗試時,我的密碼都會失敗。下面是我設置密碼的會話,然後嘗試使用它:

~ # id
uid=0(root) gid=0(root) groups=0(root)

~ # passwd
Enter new UNIX password: <helloworld>
Retype new UNIX password: <helloworld>
passwd: password updated successfully

~ # ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no root@127.0.0.1
The authenticity of host '127.0.0.1 (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:AlFtwpK4EhhaMXP5aT6fuQM9u9RYPq/o/sLJXfz++jM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '127.0.0.1' (ECDSA) to the list of known hosts.
root@127.0.0.1's password: <helloworld>
Permission denied, please try again.

如果這很明顯,我很抱歉,我不知道為什麼伺服器接受新密碼,然後接受基於密碼的登錄以最終拒絕憑據。

編輯:sshd_config我未能添加的文件

~ # cat /etc/ssh/sshd_config | grep -v ^#  | grep -v ^$                                                                                                                  root@srv
Port 22
PasswordAuthentication no
ChallengeResponseAuthentication no
GSSAPIAuthentication no
UsePAM yes
PrintMotd no
UseDNS no
AcceptEnv LANG LC_*
Subsystem       sftp    /usr/lib/openssh/sftp-server
Match Address 192.168.10.0/24,192.168.20.0/24,127.0.0.0/8
   PasswordAuthentication yes

登錄失敗,因為沒有設置預設為PermitRootLogin,這意味著密碼登錄被禁用。/etc/ssh/sshd_config``prohibit-password``root

添加

PermitRootLogin yes

Match塊將允許root使用密碼或公鑰身份驗證登錄。

另一種選擇是使用不同的使用者。

引用自:https://unix.stackexchange.com/questions/554248