一、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. Redis 集群,集群的原理是什么?

    1).Redis Sentinal 着眼于高可用,在 master 宕机时会自动将 slave 提升为master,继续提供服务. 2).Redis Cluster 着眼于扩展性,在单个 redis ...

  2. java-設計模式概述

    什麽是設計模式?? 软件设计中常见问题的典型解决方案. 能根据需求进行调整的预制蓝图, 可用于解决代码中反复出现的设计问题. 模式并不是一段特定的代码, 而是解决特定问题的一般性概念. 你可以根据模式 ...

  3. Redis 相比 Memcached 有哪些优势?

    1.Memcached 所有的值均是简单的字符串,redis 作为其替代者,支持更为丰 富的数据类 2.Redis 的速度比 Memcached 快很 3.Redis 可以持久化其数据

  4. 什么是 Spring Framework?

    Spring 是一个开源应用框架,旨在降低应用程序开发的复杂度.它是轻量级.松 散耦合的.它具有分层体系结构,允许用户选择组件,同时还为 J2EE 应用程序 开发提供了一个有凝聚力的框架.它可以集成其 ...

  5. Spring工作原理:初识SpringMVC

    1.SpringMVC简介 SpringMVC是Spring框架的一个模块.SpringMVC和Spring无需通过中间层进行整合.是一个轻量级的,基于请求响应的MVC框架. 2.1.什么是MVC? ...

  6. onsubmit阻止表单提交

    在实际开发中往往会遇到检查表单数据的合法性,如果数据不合法,就不让其提交. <!DOCTYPE html> <html> <head> <meta chars ...

  7. 可想实现一个自己的简单jQuery库?(九)

    Lesson-8 事件机制 在讲事件机制之前呢,我们有一个很重要的东西要先讲,那就是如何实现事件委托(代理). 只有必须先明白了如何实现一个事件委托,我们才能更好的去实现on和off.在我看来,on和 ...

  8. c++类调用的一个小问题

    先看这两段代码: #include <iostream> #include <vector> #include <algorithm> using namespac ...

  9. CSS简单样式练习(二)

    运行效果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...

  10. Spring-Bean依赖注入(引用数据类型和集合数据类型)

    为什么使用spring依赖注入详见–>依赖注入分析 1.创建实体类User类 package com.hao.domain; public class User { private String ...