一、SSH登录linux服务器密码验证很慢

现象:ssh登录服务器后,输入密码时,验证要等10秒左右,很慢。登录上去后速度正常,这种情况主要有两种可能的原因:

1. DNS反向解析的问题

OpenSSH在用户登录的时候会验证IP,它根据用户的IP使用反向DNS找到主机名,再使用DNS找到IP地址,最后匹配一下登录的IP是否合法。如果客户机的IP没有域名,或者DNS服务器很慢或不通,那么登录就会很花时间。

解决办法:

在目标服务器上修改sshd服务器端配置,并重启sshd

vi /etc/ssh/sshd_config,设置UseDNS为no即可

或者直接执行sed命令

sed -i 's/#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config

(后续会专门总结一遍关于grep、sed、awk三剑客,以满足进行文本处理及日志分析)

配置修改后,执行systemctl restart sshd,重启sshd服务即可。

2. 关闭ssh的gssapi认证

用ssh -v user@server 可以看到登录时有如下信息:

debug1: Next authentication method: gssapi-with-mic

debug1: Unspecified GSS failure. Minor code may provide more information

注:ssh -vvv user@server 可以看到更细的debug信息

解决办法:

在客户端上修改ssh客户端配置(注意不是sshd_conf)

vi /etc/ssh/ssh_config,设置GSSAPIAuthentication no 并重启sshd

可以使用ssh -o GSSAPIAuthentication=no user@server登录

GSSAPI ( Generic Security Services Application Programming Interface) 是一套类似Kerberos 5 的通用网络安全系统接口。该接口是对各种不同的客户端服务器安全机制的封装,以消除安全接口的不同,降低编程难度。但该接口在目标机器无域名解析时会有问题

使用strace查看后发现,ssh在验证完key之后,进行authentication gssapi-with-mic,此时先去连接DNS服务器,在这之后会进行其他操作。

二、SSH登录被拒绝

  1. 查看是否安装ssh服务:
rpm -qa |grep openssh-server
apt install openssh-server #Ubuntu系统安装方式
yum -y install openssh-server #Redhat、CentOS等安装方式

2.查看是否允许root账号直接登录

more /etc/ssh/sshd.config

#PermitRootLogin yes

3.查看SSH服务是否正常、及是否有拒绝访问的主机

 service sshd status
#Apr 26 ****refused connect from 172.0.113.34
#说明拒绝该172.0.113.34访问

4.清空黑名单列表,并将该IP加入白名单即可解决ssh登录问题

more /etc/hosts.deny
#清空相应被加入黑名单的ip,并将IP写入 /etc/hosts.allow,格式如下:
# echo "sshd: 172.0.113.34" >> /etc/hosts.allow

以下是刚刚做实验碰到的小案例

在连接服务器时,我不断着输错密码,导致触发机制,无法SSH访问

(提示:ssh_exchange_identification: read: Connection reset by peer

## -v表示查看连接详细信息
ssh -v root@10.43.190.251



解决办法:

在服务端更改配置文件



重启下sshd服务,即可接触限制,实现SSH访问

下面的排错方法是我之前在网上看到后珍藏的,感兴趣的小伙伴可以尝试下。

echo “” > /var/log/secure #清空日志文件

service rsyslog restart #重置系统日志计数器

service denyhosts stop #停止服务

/usr/share/denyhosts/data #关于hosts.deny中的IP记录一并清空

service denyhosts start #启动服务

vim /etc/hosts.deny #将解禁的IP删除

/usr/share/denyhosts/daemon-control restart #重启。 完毕

三、SSH登录后的超时设置

有些小伙伴是否困惑过,登录服务器以后,我明明已经敲上TMOUT=0,为何过段时间还会自动断开连接呢?

您可以这样做:

 vi /etc/ssh/sshd_config
ClientAliveInterval 60
ClientAliveCountMax 3

解释下:

ClientAliveInterval 60,指定了服务器端向客户端请求消息的时间间隔,默认是0,不发送。而ClientAliveInterval=60表示每分钟发送一次,然后客户端响应,这样就保持长连接了。

ClientAliveCountMax :使用默认值3即可, ClientAliveCountMax表示服务器发出请求后客户端没有响应的次数达到一定值,就自动断开。当然,正常情况下,客户端不会不响应

四、利用SSH协议实现文件传输:SCP

在介绍SSH协议族时,说明SSH不仅可以进行远程控制,也可以在计算机之间传送文件。

scp就是secure copy,一个在linux下用来进行远程拷贝文件的命令。

scp用法举例:

  • 从本地复制到远端

    1.复制文件

命令格式:

  scp '本地文件' 远端用户名@远端设备IP:远端文件夹
#举例:scp /home/test.txt root@10.10.10.2:/home

2.复制文件夹

命令格式:

## -r:递归复制整个目录
scp -r '本地文件夹' 远端用户名@远端设备IP:远端文件夹

举个例子吧:

  • 从远端复制到本端

    1.复制文件:

从远程复制到本地,只要将从本地复制到远程的命令的后2个参数调换顺序即可;

命令格式:

scp 远端主机名@远端设备IP:/远端主机文件 /存放在本地的文件夹
#举例: scp root@10.10.10.1:/test/test1.txt /tmp

2.复制文件夹

scp -r 远端主机名@远端设备IP:/远端主机文件夹/ /存放在本地的文件夹

举例:



更多IT技术,请微信搜索公众号“秦露露”或者扫描下方二维码关注

2.SSH协议常见问题排错的更多相关文章

  1. SSH远程连接排错的过程

    SSH远程连接排错的过程 http://note.youdao.com/noteshare?id=bc81e9036cd2067cb1857ca9f54299a7 补充 ping命令用来测试主机之间网 ...

  2. Git : SSH 协议服务器

    SSH 协议用于为 Git 提供远程读写操作,是远程写操作的标准服务. SSH协议语法格式 对于拥有 shell 登录权限的用户账号,可以用下面的语法访问 Git 版本库: 语法 1 : ssh:// ...

  3. 何为SSH协议?

    该文来自百度百科,自我收藏. SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH ...

  4. 【Jsch】使用SSH协议连接到远程Shell执行脚本

    如果大家熟悉Linux的话,一定对ssh,sftp,scp等命令非常熟悉,ssh是一个安全协议,用来在不同系统或者服务器之间进行安全连接,SSH 在连接和传送的过程中会加密所有的数据. 但是SSH一般 ...

  5. ssh 协议执行repo sync 报错:Permission denied (publickey)

    1.ssh key 已经添加ssh key到gerrit服务器,并且执行ssh协议的git clone可以正常克隆代码到本地,可见不是ssh key的问题. 2.manifest清单文件配置 最初在m ...

  6. SSH协议及其应用

    SSH协议及其应用 原文作者:阮一峰 链接: http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html http://www.ruany ...

  7. Java 实现 SSH 协议的客户端登录认证方式--转载

    背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间 ...

  8. SSH2.0编程 ssh协议过程实现

    之前为了自己做一套SSH,先自己实现了一套telnet.但经过这么多天的苦逼,发现以前的工作都是徒劳.ssh的协议很繁杂,核心的内容在于密码算法,而且自己很难在网上找到周全的细节讲解与详细的实现,只有 ...

  9. SSH协议详解(转)

    转发的http://blog.csdn.net/macrossdzh/article/details/5691924 很透彻啊,学习了 一.什么是SSH SSH是英文Secure Shell的简写形式 ...

随机推荐

  1. 面试问题之数据库:SQL优化的具体操作

    转载于:https://www.cnblogs.com/wangzhengyu/p/10412499.html SQL优化的具体操作: 1.尽量避免使用select *,返回无用的字段会降低查询效率. ...

  2. Centos最小化安装

    1.选择最小安装: 2.选择相应的安装包 老男孩提示: 1.根据经验,选择安装包时应该按最小化原则,即不需要的或者不确定是否需要的就不安装,这样可以最大程度上确保系统安全. 2.如果安装过程落了部分包 ...

  3. 遇到的错误之“Cannot find module 'XXX’的错误”

    一.问题: 在进行webpack打包的时候,会出现Cannot find module 'XXX'的错误,找不到某个模块的错误 二.解决方法: (1)方法1: 直接进行npm install重新打包: ...

  4. 用一个文件,实现迷你 Web 框架

    当下网络就如同空气一样在我们的周围,它以无数种方式改变着我们的生活,但要说网络的核心技术变化甚微. 随着开源文化的蓬勃发展,诞生了诸多优秀的开源 Web 框架,让我们的开发变得轻松.但同时也让我们不敢 ...

  5. 《每周一点canvas动画》——3D点线与水波动画

    <每周一点canvas动画>--差分函数的妙用 每周一点canvas动画代码文件 好像上次更新还是十一前,这唰唰唰的就过去大半个月了,现在才更新实在不好意思.这次我们不涉及canvas 3 ...

  6. SQL之总结(一)

    导游通项目之总结SQL 1.选择前面的某几个 oracle:  select * from tb_article where rownum<5 order by article_id       ...

  7. 【promise| async/await】代码的控制力

    什么样的代码好控制? 结构 + 节奏 --- 什么鬼? 如何控制节奏? 具体例子看看怎么控制节奏?

  8. 【Android开发】【布局】自定义底部菜单栏(中间图标凸起)

    我的Demo 参考: http://blog.csdn.net/xh870189248/article/details/75808341 http://blog.csdn.net/xh87018924 ...

  9. 每日所学之自学习大数据的Linux环境的配置

    今天开始配置环境,因为下载镜像文件需要很长时间,加上训练,所以Linux环境之配置了一半 VMware下载及安装教程(Window) 在安装虚拟机时需要下载镜像文件 下面是我下载的镜像文件的地址 Ce ...

  10. 【每日日报】第四十七天---<div>

    1 学习HTML HTML <div> 元素是块级元素,它可用于组合其他 HTML 元素的容器. <div> 元素没有特定的含义.除此之外,由于它属于块级元素,浏览器会在其前后 ...