Liunx ssh known_hosts
 
known_hosts是做服务器认证的。当用 ssh 连接到一个新的服务器的时候,ssh 会让你确认服务器的信息(域名、IP、公钥),如果你确认了,就会把这些信息写到 known_hosts (~/.ssh/known_hosts) 里,下次登录的时候就不需要再确认了。
[***@localhost ~]$ ssh -i test.pem test@10.57.***.***
The authenticity of host '10.57.***.*** (10.57.***.***)' can't be established.
ECDSA key fingerprint is SHA256:lmHAb/8OpqvHfFHpu03VchRuHh92PBmxO1Ms+NYDy58.
ECDSA key fingerprint is MD5:61:82:03:13:ee:b8:a9:54:7f:75:f1:70:34:79:bb:88.
Are you sure you want to continue connecting (yes/no)?
以后再连接到这个服务器,但是信息改变了(通常是公钥改变了),就会提示你服务器信息改变了,你可以把它从 known_hosts 里删除,然后重新确认。
 
查看 client 中的 known_hosts 的公钥:
10.57.***.*** ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNy4eymcWeMRMUsKL2ddxa8ZIoRpzUjo+wtO4pHb+SDjt/S+Q=
 
当 client 登录 server 的时候,server 会将 /etc/ssh/ssh_host_ecdsa_key.pub 公钥发给 client,它自己有 ssh_host_ecdsa_key 这个私钥,用来确认这个 client 是可以登陆自己的。
cat /etc/ssh/ssh_host_ecdsa_key.pub
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBq+u0FxfHDFmiZLeymcWeMRMUsKL2ddxa8ZIoRpzUjo+wtO4pHb+SDjt/S+Q=
手动改掉 server 的 pub 和 private key,从 client 登陆 server,提示 Host Key verification failed:
[test@localhost ~]$ ssh -i test.pem cbam@10.57.***.***
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:1ZxM8C4eKvSfkD+ShGPEqCZvBz/LFwzwGHOhD2DtVuA.
Please contact your system administrator.
Add correct host key in /home/installer/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/installer/.ssh/known_hosts:1
ED25519 host key for 10.57.193.147 has changed and you have requested strict checking.
Host key verification failed.
[test@localhost ~]$
 
删除 client 的 known_hosts 文件,重新登陆,登陆成功!
 
 
Liunx ssh no_password & no_user
 
设置免密登陆:
  1. client 上执行 “ssh-keygen -t rsa”,生成 pub 和 private key,无视提示,一路 Enter。
  2. 公钥 ~/.ssh/id_rsa.pub 复制到远程机器的 /home/username/.ssh 目录并命名为 authorized_keys。
  3. 本机登陆用户和远程登陆用户一致的话,就可以直接 ssh hostname 登陆,如果不一致的话通过 ssh user@hostname 登陆,要注意 authorized_keys 的权限,如果用户不一致的话要将权限设为 640。

ssh 的时候不需要询问是否确认服务器信息是因为这些信息已经存在 ~/.ssh/known_hosts 文件了。

    更改远程主机的 hostname,通过 ssh user@other_hostname 的形式登陆: 在 /etc/hosts 文件中加上 “10.57.***.*** test.local”,test.local 是 10.57.***.*** 的别名,然后就可以通过 ssh test@test.local 的方式登陆 server。
    再去 known_hosts 中查看新加了一个 hostname 和 key:
test.local ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL7PlX4ltPy+WYRiexdY/r/XBX38oRm0m3uB8fIgTG94
    ps: /etc/hosts 文件,它是配置 ip 地址和其对应主机名的文件。可以记录本机或者其它主机对应的 ip 和主机名。它分为三部分:主机 ip / 主机名 / 主机名别名。
 
  1. 免用户名登陆: 在 .ssh/config 文件(如果没有的话可以自己新建一个)中写入 Host 和 user 的对应关系,如下:
Host test.local
user test
  1. 使用 ssh test.local 登陆 server,成功!
 
Liunx 静态检查
 
如果 client 端的 known_hosts 里没有 server 的信息,或者 server 的信息改变的话,那么下次登陆就会做公钥(静态)检查。但是,对于一些自动化脚本来说,执行静态检查会使得任务执行失败,此时取消静态检查是很有必要的。
两种方式取消静态检查:
1. ssh -o StrictHostKeyChecking=no hostname
[***@localhost ~]$ rm -rf .ssh/known_hosts
[***@localhost ~]$ ssh ***.local
The authenticity of host 'cbam.local (10.57.***.***)' can't be established.
ED25519 key fingerprint is SHA256:1ZxM8C4eKvSfkD+ShGPEqCZvBz/LFwzwGHOhD2DtVuA.
ED25519 key fingerprint is MD5:19:89:9b:62:5d:70:8b:29:b6:05:01:41:73:bb:29:05.
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.
[***@localhost ~]$ cd .ssh/
[***@localhost .ssh]$ ls
authorized_keys config id_rsa id_rsa.pub
[***@localhost .ssh]$ ssh -o StrictHostKeyChecking=no test.local
Warning: Permanently added 'test.local,10.57.***.***' (ED25519) to the list of known hosts.
Last login: Fri Jul 12 11:50:30 2019 from 10.57.193.149
[test@*** ~]$ exit
logout
Connection to cbam.local closed.
[***@localhost .ssh]$ ls
authorized_keys config id_rsa id_rsa.pub known_hosts

注意,静态检查不意味着不会将 server 的信息加载到 known_hosts 中,只是说不做检查了。同时,Warning 信息还是会有的,取消静态检查并不会取消掉 Warning。

 
2. 在 ~/.ssh/config (如果没有的话创一个) 文件中添加 StrictHostKeyChecking no 这一句:
cat ~/.ssh/config
StrictHostKeyChecking no
补充:禁用静态检查会导致如果 server 的公钥改变的话,会提示告警,但是 client 还是可以登陆上去:
 
[***@localhost .ssh]$ vi known_hosts
[***@localhost .ssh]$ ssh -o StrictHostKeyChecking=no ***.local
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:1ZxM8C4eKvSfkD+ShGPEqCZvBz/LFwzwGHOhD2DtVuA.
Please contact your system administrator.
Add correct host key in /home/installer/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/installer/.ssh/known_hosts:1
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
Last login: Fri Jul 12 12:14:32 2019 from 10.57.193.149
[***@*** ~]$ exit
 
取消这种告警,无视公钥改变可指定 “UserKnownHostsFile=/dev/null” ,提示信息就会变为首次连接的提示。
“ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null” 配合使用则公钥改变也不会出现告警。
[root@*** ~]cat ~/.ssh/config
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null [root@*** ~]# ssh root@10.57.***.***
Warning: Permanently added '10.57.***.***' (ECDSA) to the list of known hosts.
Last login: Fri Mar 6 00:22:15 2020 from 10.57.200.86
[root@*** ~]#
注意,设置了 UserKnownHostsFile=/dev/null,client 在登陆 server 的时候不会将 server 的信息添加到 known_hosts 中。
 
 
(完)

每天学五分钟 Liunx 010 | ssh的更多相关文章

  1. 如何从40亿整数中找到不存在的一个 webservice Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库 WPF实战案例-打印 RabbitMQ与.net core(五) topic类型 与 headers类型 的Exchange

    如何从40亿整数中找到不存在的一个 前言 给定一个最多包含40亿个随机排列的32位的顺序整数的顺序文件,找出一个不在文件中的32位整数.(在文件中至少确实一个这样的数-为什么?).在具有足够内存的情况 ...

  2. 零元学Expression Blend 4 - Chapter 42 五分钟快速完成扇形变圆形动画

    原文:零元学Expression Blend 4 - Chapter 42 五分钟快速完成扇形变圆形动画 零元学Expression Blend 4 - Chapter 42 五分钟快速完成扇形变圆形 ...

  3. 五分钟学Java:如何才能学好Java Web里这么多的技术

    原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...

  4. 《sed的流艺术之一》-linux命令五分钟系列之二十一

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  5. git五分钟教程

    使用Git前,需要先建立一个仓库(repository).您可以使用一个已经存在的目录作为Git仓库或创建一个空目录. 使用您当前目录作为Git仓库,我们只需使它初始化. git init 使用我们指 ...

  6. 五分钟搭建一个基于BERT的NER模型

    BERT 简介 BERT是2018年google 提出来的预训练的语言模型,并且它打破很多NLP领域的任务记录,其提出在nlp的领域具有重要意义.预训练的(pre-train)的语言模型通过无监督的学 ...

  7. 一门能让你五分钟学会的语言-Brainfuck

    看到标题,不出意外的话,你肯定开始骂我了:**标题党,什么编程语言五分钟就能学会? 其实我本来也是不相信的,但是学过了才知道这是真的. 1.Brainfuck 看到这个小标题,不要误会,我没有骂人. ...

  8. 用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树

    这些对老一代的程序员都是老生常谈的东西,没什么新意,对新生代的程序员却充满着魅力.曾经新生代,好多都经过漫长的学习,理解,实践才能掌握委托,表达式树这些应用.今天我尝试用简单的方法叙述一下,让大家在五 ...

  9. [分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例)

    [分享] 史上最简单的封装教程,五分钟学会封装系统(以封装Windows 7为例) 踏雁寻花 发表于 2015-8-23 23:31:28 https://www.itsk.com/thread-35 ...

  10. JVM内存管理------GC算法精解(五分钟让你彻底明白标记/清除算法)

    相信不少猿友看到标题就认为LZ是标题党了,不过既然您已经被LZ忽悠进来了,那就好好的享受一顿算法大餐吧.不过LZ丑话说前面哦,这篇文章应该能让各位彻底理解标记/清除算法,不过倘若各位猿友不能在五分钟内 ...

随机推荐

  1. 前端传递Base64字符串,后端转流存入OSS

    工具类 public static BufferedInputStream base64Convert(String base64) { // 解码 base64 = base64.split(&qu ...

  2. 【.NET】控制台应用程序的各种交互玩法

    老周是一个不喜欢做界面的码农,所以很多时候能用控制台交互就用控制台交互,既方便又占资源少.有大伙伴可能会说,控制台全靠打字,不好交互.那不一定的,像一些选项类的交互,可以用键盘按键(如方向键),可比用 ...

  3. transformer模型

    Transformer由谷歌团队在论文<Attention is All You Need>提出,是基于attention机制的模型,最大的特点就是全部的主体结构均为attention. ...

  4. NC65单据模板公式使用

    单据模板公式使用 (一) 公式使用场景 用户使用产品时,往往对单据上的字段取值有各种不同的需求.为此单据模板提供 了模板公式功能,可以让实施顾问或者用户通过配置各种公式,并且不用修改代码,从 而满足用 ...

  5. 使用gradle的方式进行Springboot3的web开发(微服务版)

    简要: 最近看了很多的Springboot3的项目,但是发现很多都是用maven来进行版本管理的,很少有用gradle来管理的,通过网上查找资料,看视频,终于自己写一个gradle管理的Springb ...

  6. Python——第五章:shutil模块

    复制文件 把dir1的文件a.txt 移动到dir2内 import shutil shutil.move("dir1/a.txt", "dir2") 复制两个 ...

  7. Spring Boot中设置定时发送邮件任务

    1:浅谈发送邮箱: 邮箱验证是一个很常见的功能了,基本上每个网站都会用的到, java也有专门的jar来处理邮件发送等服务 2:学过javaweb大家都对发送邮箱上不是很陌生了吧 但之前发送邮箱的步骤 ...

  8. Spring WebFlux 简介

    本文基于 Spring Boot 2.6.0 基于之前提到的 Reactor 的出现,使得编写响应式程序成为可能.为此,Spring 的开发团队决定添加有关 Reactor 模型的网络层.这样做的话将 ...

  9. 消除视觉Transformer与卷积神经网络在小数据集上的差距

    摘要:本文通过多种操作构建混合模型,增强视觉Transformer捕捉空间相关性的能力和其进行通道多样性表征的能力,弥补了Transformer在小数据集上从头训练的精度与传统的卷积神经网络之间的差距 ...

  10. ModelArts的雪中送炭,让我拿下CCF BDCI华为Severless工作负载预测亚军

    摘要: 中国计算机学会大数据与计算智能大赛(CCF BDCI)华为Severless工作负载预测亚军方案和ModelArts使用体验分享 本文分享自华为云社区<免费薅ModelArts算力资源- ...