~/.ssh/
路径下按照默认的密钥(私钥)文件名(如id_rsa)查找对应的密钥并尝试使用本地的私钥去配对服务器端的公钥,如果配对成功则不需要进行密码验证(这也是通常实现SSH免密登录的原理),如果配对失败则尝试使用密码验证的方式进行身份验证。但是如果ssh配置文件中关闭了密码验证,那么当密钥无法配对成功时,就会报如题的错误。同样的如果在没有开启密码验证的时候,尝试使用ssh-copy-id
,也会报此错误。命令格式如下:
ssh <remote_username>@<remote_ip> -i <your_local_private_key>
示例:
ssh admin@114.67.40.28 -i /home/tomandersen/id_rsa
注意:如果是在Windows平台下使用Git Bash,则默认密钥(私钥)一般存放在C:\Users\<your_account>\.ssh
目录下。如果没有对应私钥是没有办法连接到远端的。
修改/etc/ssh/sshd_config:
sudo vim /etc/ssh/sshd_config
将PasswordAuthentication设置成为yes(一般在文件的末尾几行):
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
UseDNS no
AddressFamily inet
PermitRootLogin yes
SyslogFacility AUTHPRIV
#PasswordAuthentication no
PasswordAuthentication yes
注意:不是修改/etc/ssh/ssh_config
文件
修改配置之后就可以正常使用密码的方式进行身份验证登录服务器了