环境:
在 window10 安装了 Virtual Box 虚拟机,并使用 Vagrant 安装了 Homestead 盒子。
问题
虚拟机内的 Linux 系统,每次进行 SSH 登录的时候,感觉都比 windows 宿主机使用 PUTTY 工具登录要慢很多。
分析
在登陆过程中经常协商之后有个认证的顺序,然后依次选择认证方式,直到认证成功。
ssh 命令行中可以通过增加 -vvv 选项来进行 debug 整个登陆的过程。
ssh root@123.98.23.123 -vvv
......
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
# (卡住好几秒)
debug1: Unspecified GSS failure. Minor code may provide more information
No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_1000)
# (又卡住几秒)
......
发现在以上地方卡了一段时间才登录。
GSSAPI 认证,客户端需要反向解析服务端的IP。由于客户端侧配置的 DNS 服务器不可达,导致超时重试多次。
解决
在使用 SSH 登录的 Linux 虚拟机上:
ssh 客户端配置( /etc/ssh/ssh_config
)将 GSSAPIAuthentication
设为 no
或者下面任何一种都可:
ssh 服务端配置( /etc/ssh/sshd_config )将 GSSAPIAuthentication 设为 no
ssh 客户端正确配置 DNS 服务器( /etc/resolv.conf )
ssh 客户端 hosts 文件( /etc/hosts )增加服务端的IP、主机名对应关系
其他可能
useDNS 配置导致登陆慢
在登陆的过程中,服务端发起多次反向域名解析的请求。 反向域名解析就是根据IP查找域名的过程。
ssh服务端向DNS服务器发起反向域名解析的请求,请求解析客户端IP的域名。
由于DNS服务器配置( /etc/resolv.conf
)的不正确,导致发出的请求未有响应,每隔5s超时重试一次。
该配置主要用于安全加固,服务器会先根据客户端的IP地址进行DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,并验证是否与原始IP地址一致,通过此种措施来防止客户端欺骗。
解决:
ssh 服务端的配置文件(通常是 /etc/ssh/sshd_config
)中设置 useDNS no
,然后重启 ssh 服务。
Linux ssh 登陆慢的两种原因分析 https://www.cnblogs.com/xysr-tom/p/10695407.html