ssh连接服务器时出现Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

闽哲
2023-12-01

前言

  • SSH工具连接服务器的身份验证方式有两种,一种是基于口令的身份验证,一种是基于密钥的身份认证。当你直接使用SSH工具连接服务器时,SSH首先会在~/.ssh/路径下按照默认的密钥(私钥)文件名(如id_rsa)查找对应的密钥并尝试使用本地的私钥去配对服务器端的公钥,如果配对成功则不需要进行密码验证(这也是通常实现SSH免密登录的原理),如果配对失败则尝试使用密码验证的方式进行身份验证。但是如果ssh配置文件中关闭了密码验证,那么当密钥无法配对成功时,就会报如题的错误。同样的如果在没有开启密码验证的时候,尝试使用ssh-copy-id,也会报此错误。

解决方案

1)使用对应私钥连接服务端

命令格式如下:

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目录下。如果没有对应私钥是没有办法连接到远端的。

2)修改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文件

3)使用密码登录

修改配置之后就可以正常使用密码的方式进行身份验证登录服务器了


End~

 类似资料: