通常情况下,我会使用非对称加密的方式来进行ssh的登录。

做法:

  将公钥添加到 $HOME/.ssh/authorized_keys 文件中。

但是通常,会遇见各种各样的问题,导致失败。汇总如下:

0. 常用的排除手段,一般就是,双端开debug,clinet开启的方式如下,server还从来没与与遇见过需要开的情况,一般开client端就都搞定了。

/home/tong [tong@T7] [:]
> ssh -vvvvv root@t54
OpenSSH_7.5p1, OpenSSL 1.1.0e Feb
debug1: Reading configuration data /home/tong/.ssh/config
debug1: /home/tong/.ssh/config line : Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config

1. 使用的私钥加密算法已经被openssh弃用,如 之前的 ssh-dss 就已经被新版openssh启用了,如果启用,可以如下配置:

/home/tong [tong@T7] [:]
> cat ~/.ssh/config
HOST *
HostKeyAlgorithms +ssh-dss
ForwardX11 yes

  还可以通过命令和man手册,查看都支持那些算法。详细操作略。

2.  万恶的selinux搞得鬼, 禁掉禁掉,stopstop。

  具体操作略。

  然鹅,使用selinux一定有其好处以及必要性,所以还是需要花些时间,学习一下。

  无意中看到的一个参考:

    The SELinux contexts need to be right as well if you didn't disable that. The command "restorecon -R .ssh" should fix that.

3.  authorized_keys 文件的权限不对,改成644, 记不太清了,记忆的深处好像是有这么回事的。。。

4.  同样的key,root用户好用,tong用户便不好用。debug之后,发现server返回的是:

debug3: receive packet: type 

  google之

  https://superuser.com/questions/1137438/ssh-key-authentication-fails

  当前的权限是:

[root@T54 ~]# ll -a  /home/tong/  |grep '\.ssh'
drwxrwxr-x. tong tong May : .ssh
[root@T54 ~]# ll -a /root/ |grep '\.ssh'
drwxr-xr-x root root May : .ssh
[root@T54 ~]#

  改过权限之后,好用了:

[tong@T54 ~]$ ll -a |grep '\.ssh'
drwxr-xr-x. tong tong May : .ssh
[tong@T54 ~]$ ll .ssh/
total
-rw-r--r-- tong tong May : authorized_keys
[tong@T54 ~]$

-------------------------------  update @ 2017-10-24 ----------------------------

排除以上情況依然会有key不好使的时候. 这次有被我遇到.

以往, 一直在ssh的时候使用-vvvv 来排除故障, 然而这种方法其实是愚蠢的. 因为, 这会给黑客们可称之机.

查看server的 /var/log/secure 日志文件, 将发现更多的错误信息, 如下:

> sudo tail -f /var/log/secure
Sep :: new-server sshd[]: Authentication refused: bad ownership or modes for directory /home/dave/.ssh

我这次遇到错误是:

 Authentication refused: bad ownership or modes for directory /root

因为root目录的owner被改成了game组.....

[CentOS7][ssh][publickey][troubleshoot] 通过密钥登录ssh故障排查的更多相关文章

  1. Linux操作系统设置SSH及SFTP通过密钥登录

    如果你使用过Linux操作系统的VPS或其他服务器,可能在登录时经常会提示你有多少次登录失败的记录. 这种登录失败的记录实际上也就是攻击者使用脚本自动扫描全网的IP然后进行筛选和测试,最终脚本会使用内 ...

  2. Linux使用密钥登录SSH

    输入命令和上传密钥时需要注意当前目录.账号和读写权限 生成密钥 使用服务器生成(方法一,推荐) 1.1生成密钥 #ssh-keygen(这里pwd为当前账号的home目录) 1.2下载密钥 .id_r ...

  3. Linux限制某些用户或IP登录SSH、允许特定IP登录SSH

    说明:一般要实现这种功能时,先安装VPN,然后客户端登录VPN,然后通过内网IP登录SSH. 搭建OpenVPN: 参考:http://www.cnblogs.com/EasonJim/p/83338 ...

  4. 增强VPS SSH账号安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击

    VPS SSH账号是我们日常管理VPS的主要登入方式,尤其是Root账号,对Linux系统安全至关重要.以前好多站长喜欢用Putty中文版,这实际是别人修改官方Putty汉化而来,这些软件被植入了后门 ...

  5. 使用ssh公钥实现免密码登录

    使用ssh公钥实现免密码登录 ssh 无密码登录要使用公钥与私钥.linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例. 有机器A(10.207.160.34),B(10 ...

  6. Centos7.5使用SSH密钥登录

    12.1.查看操作系统版本 # cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 12.2.在服务器端创建密钥 # ssh-ke ...

  7. fail2ban软件 +ssh密钥登录

    fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH.SMTP.FTP密码,只要达到你预设的次数,fa ...

  8. linux ssh publickey登录

    一.公钥认证的基本思想: 对信息的加密和解密采用不同的key,这对key分别称作private key和public key,其中,public key存放在目标服务器上,而private key为特 ...

  9. 多台计算机之间的ssh无密钥登录

    在很多分布式系统中,我们最常遇到的一个问题是,需要在服务器集群上保证多台机器之间的SSH无密钥登录.以Hadoop为例,为了方便,我们需要在master和slaves之间配置密钥登录,这样我们启动Ha ...

随机推荐

  1. [svc]rsync简单部署

    安装rsync服务端-backup服务器 yum install rsync -y useradd rsync -s /sbin/nologin -M chown -R rsync.rsync /da ...

  2. 15款基于 jQuery模态对话框

    在数字世界的竞争已大大增加.这就是为什么要确保网络设计的各个方面都是一流的,这是很重要的.从布局到一些非常小的东西,比如对话框,每一件都需要设计得很好.对话框通常被忽视,但它们可能对访问者有很大的影响 ...

  3. JUnit+Mockito结合测试Spring MVC Controller

    [本文出自天外归云的博客园] 概要简述 利用JUnit结合Mockito,再加上spingframework自带的一些方法,就可以组合起来对Spring MVC中的Controller层进行测试. 在 ...

  4. MXNET:深度学习计算-GPU

    mxnet的设备管理 MXNet 使用 context 来指定用来存储和计算的设备,例如可以是 CPU 或者 GPU.默认情况下,MXNet 会将数据创建在主内存,然后利用 CPU 来计算.在 MXN ...

  5. Android 浮动窗口进阶——画中画,浮动视频(附Demo)

    今天继续上一篇Android顶层窗口.浮动窗口的进阶应用.上一篇主要讲解了WindowManager服务和如何使用WindowManager编写一个顶层窗口.今天主要是讲讲如何在顶层窗口里面播放视频, ...

  6. 树莓派2上手 —— Raspbian的一些基本配置问题

    先说点废话: 原来的笔记本因为上次被儿子拿着充电器玩的时候漏电烧了主板,修了之后还是时不时就突然宕机,Windows也完全起不来.后面这个问题倒是不大,真要用Windows的时候拿老婆的用一下就是了, ...

  7. Centos6.4 编译安装 nginx php

    一. 准备依赖库 安装make: yum -y install gcc automake autoconf libtool make 安装g++: yum install gcc gcc-c++ 二. ...

  8. Hadoop:HDFS NameNode内存全景

    原文转自:https://tech.meituan.com/namenode.html 感谢原作者 一.概述 从整个HDFS系统架构上看,NameNode是其中最重要.最复杂也是最容易出现问题的地方, ...

  9. Git之右键没有Git Bash Here的解决办法

    1.Win+R 打开运行输入regedit 回车打开注册表 2.找到[HKEY_CLASSES_ROOT\Directory\Background]. 3.在[Background]下如果没有[she ...

  10. Maven支撑下的War应用依赖另外一个WAR应用的解决方案

    最近在做项目中,用Maven管理项目间的依赖关系,遇到一个问题,快折腾死了,不过初步试出来一种解决方案.在此把问题及解决方案描述一下,以资共享.   问题描述:有两个项目A和B,Dynamic Web ...