加速ssh登陆
关闭DNS反向解析
在使用ssh远程登陆服务器时候,经常会遇到ssh登陆缓慢问题,通常原因如下:
ssh服务器默认启用了DNS反向解析,对ssh client的IP反向解析无法完成,需要DNS反向解析超时后才能继续。
CentOS ssh客户端默认启用了
GSSAPIAuthentication
,这个安全认证选项是结合Kerberos使用的,如果没有配置Kerberos会导致登陆缓慢
通过 ssh -vvv
可以看到完整的ssh登陆过程,例如,如果启用了GSSAPIAuthentication
,会看到:
实际上,对于很多环境,如果没有使用公钥认证登陆,而是使用密码认证,则在密码认证之前,默认会尝试GSSAPIAuthentication
。此时会浪费掉数十秒时间,导致ssh执行脚本效率降低。
解决方法:
也可以将将这配置写入到 /etc/ssh/ssh_config
中:
则后续采用密码认证就非常快速。
跳过密码错误的节点
我经常使用 for 循环来执行一些命令,例如一些环境不能使用pssh。但是有一个问题,就是遇到某些服务器无法直接登陆,会提示密码输入。而我需要忽略这个错误继续执行循环,反复敲击回车实在太垃圾了。
参考 How do I make ssh fail rather than prompt for a password if the public-key authentication fails? 有一个解决方法,就是使用BatchMode,这个方式会忽略掉需要密码输入的ssh登陆。
另外通常还可以在客户端关闭掉密码认证,即配置 ~/.ssh/config
添加:
这样就会忽略密码认证节点
参考
Last updated