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. HDFS存储原理

    冗余数据保存问题: 一个数据块默认被保存三次 好处:1.加快数据传输错误(假如要同时访问数据块1 因为他冗余存储就会有3份 所以会加快数据传输速度) 2.很容易检查数据错误 3.保证数据可靠性 数据的 ...

  2. Object.defineProperty用法

    1.能干啥? Object.defineProperty()可以给传入的对象动态的添加或修改属性 2.怎么玩? Object.defineProperty(obj,prop,desc)它有三个参数: ...

  3. MybatisPlus属性自动填充

    阿里巴巴开发规范,对于每一张表都因该有id(主键),createTime(创建时间),updateTime(修改时间)这三个字段 主键ID我们可以使用自增,或者雪花算法 创建时间修改时间我们可以使用数 ...

  4. IDEA创建Springboot项目在application.yml配置文件配置了nacos远程注册中心,启动项目还是找localhost的问题

    项目结构如下: 报错如下: 解决办法: # 错误的 #spring.cloud.nacos.config.server-addr=192.168.137.137:8848 #spring.cloud. ...

  5. LIS和LCS算法分析

    LIS(最长上升子序列) 常规的解法就是动态规划. mx[ j ]表示长度为j的上升子序列最小的值a[i]; dp[ i ]表示前i个数的最长上升子序列长度多少. 1 for(int i=1;i< ...

  6. python操作mongodb副本集(mongodb高可用)

    https://pymongo.readthedocs.io/en/stable/examples/high_availability.html# pymongo比较"智能",只要 ...

  7. 2024-01-13:用go语言,现在有一个打怪类型的游戏,这个游戏是这样的,你有n个技能, 每一个技能会有一个伤害, 同时若怪物小于等于一定的血量,则该技能可能造成双倍伤害, 每一个技能最多只能释放

    2024-01-13:用go语言,现在有一个打怪类型的游戏,这个游戏是这样的,你有n个技能, 每一个技能会有一个伤害, 同时若怪物小于等于一定的血量,则该技能可能造成双倍伤害, 每一个技能最多只能释放 ...

  8. static、final、private是否可以修饰抽象方法?

    1.static和abstract:是不能共存的.static是为了方便调用,abstract是为了给子类重写,没有方法体. 2.final和abstract:是互相冲突的,final修饰的方法不能重 ...

  9. tmux 增加历史回滚缓冲区 buffer

    tmux 默认回滚 2000 行,如果要查看更多记录(比如编译报错)可以在.tmux.conf文件中增加一行 set -g history-limit 5000 重启 tmux session 生效

  10. 【玩转鲲鹏 DevKit系列】如何快速迁移无源码应用?

    本文分享自华为云社区<[玩转鲲鹏 DevKit系列]如何快速迁移无源码应用?>,作者: 华为云社区精选. 为了帮助广大用户和开发者快速将无源码应用从 x86 迁移到鲲鹏,鲲鹏 DevKit ...