[转帖]SSH交互式脚本StrictHostKeyChecking选项 benchmode=yes
https://www.cnblogs.com/klb561/p/11013774.html
SSH 公钥检查是一个重要的安全机制,可以防范中间人劫持等黑客攻击。但是在特定情况下,严格的 SSH 公钥检查会破坏一些依赖 SSH 协议的自动化任务,就需要一种手段能够绕过 SSH 的公钥检查。
什么是SSH公钥检查
SSH 连接远程主机时,会检查主机的公钥。如果是第一次该主机,会显示该主机的公钥摘要,提示用户是否信任该主机:
The authenticity of host '10.0.0.1 (10.0.0.1)' can't be established.
ECDSA key fingerprint is 91:63:21:08:4a:96:23:5b:f6:98:c9:a8:cd:cb:8b:91.
Are you sure you want to continue connecting (yes/no)?
当选择接受,就会将该主机的公钥追加到文件 ~/.ssh/known_hosts 中。当再次连接该主机时,就不会再提示该问题了。
如何去掉公钥确认?
在首次连接服务器时,会弹出公钥确认的提示。这会导致某些自动化任务由于初次连接服务器而任务中断。或者由于~/.ssh/known_hosts 文件内容清空,导致自动化任务中断。 SSH 客户端的 StrictHostKeyChecking 配置指令,可以实现当第一次连接服务器时,自动接受新的公钥。只需要修改 /etc/ssh/ssh_config 文件,包含下列语句:
Host *
StrictHostKeyChecking no
或者在 ssh 命令行中用 -o 参数
$ ssh -o StrictHostKeyChecking=no 10.0.0.1
---------------------
1: 当通过ssh连接远程服务器的时候,可能会出现以下繁琐场景,需要手工输入yes:
ssh username@ip

这对于某些分布式集群来说是不行的,甚至导致集群都不能启动成功,对于像pssh,pscp这样的自动化工具来说,也不希望这一步的验证,如何在连接的时候不提示这个信息呢:
|
1
|
方法1、ssh -o "StrictHostKeyChecking no" username@hostname<br>方法2:修改/etc/ssh/ssh_config,在文件最后添加 StrictHostKeyChecking no,接着重启ssh服务 |
2:远程执行服务器上面的命令可以通过sshpass(当集群机器之间没有免密的时候),如果没有安装,,执行 yum install sshpass -y
用法:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@test ~]# sshpass -hUsage: sshpass [-f|-d|-p|-e] [-hV] command parameters -f filename Take password to use from file -----指定一个文件,从文件中读取密码 -d number Use number as file descriptor for getting password -p password Provide password as argument (security unwise) ----命令行直接输入密码,不安全 -e Password is passed as env-var "SSHPASS" -----通过设置环境变量SSHPASS来保存密码 With no parameters - password will be taken from stdin -P prompt Which string should sshpass search for to detect a password prompt -v Be verbose about what you're doing -h Show help (this screen) -V Print version informationAt most one of -f, -d, -p or -e should be used |
Eg:
(1)使用 -f
|
1
2
3
4
|
[root@test ~]# sshpass -f passwd.txt ssh root@192.168.0.235 "free -m" total used free shared buff/cache availableMem: 96405 27169 12563 4066 56672 63775Swap: 126 19 107 |
(2)使用 -p
|
1
2
3
4
|
[root@test ~]# sshpass -p "mypasswd" ssh root@192.168.0.235 "free -m" total used free shared buff/cache availableMem: 96405 27168 12584 4066 56652 63777Swap: 126 19 107 |
注:生产环境不要使用这种方式,不安全
(3)使用 -e
|
1
2
3
4
5
6
7
|
[root@test ~]# export SSHPASS="mypasswd"[root@test ~]# echo $SSHPASSmypasswd[root@test ~]# sshpass -e ssh hduser@192.168.0.235 "free -m" total used free shared buff/cache availableMem: 96405 27209 12561 4066 56634 63735Swap: 126 19 107 |
当然,这种方式只针对当前shell有用,如果要配置永久生效,请修改/etc/profile文件
(4)sshpass、ssh都支持多命令调用,只要在命令之间使用&&号就行。
|
1
2
3
4
5
6
7
8
|
[root@test ~]# sshpass -e ssh -l root -o 'StrictHostKeyChecking no' 192.168.4.50 ls /home && free -mhadoopmysqlyjtzbc total used free shared buff/cache availableMem: 977 364 95 49 518 366Swap: 4095 35 4060 |
3、如果想要远程机器调用本地脚本,那么可以如下实现
(1)ssh方式
|
1
2
|
[root@test ~]# ssh -l root -o 'StrictHostKeyChecking no' 192.168.4.50 bash -s < test46.shrunstone.com |
(2)sshpass方式
|
1
2
|
[root@test ~]# sshpass -e ssh -l root -o 'StrictHostKeyChecking no' 192.168.4.50 bash -s < test46.shrunstone.com |
4、支持sudo
有些命令需要权限才行,当不想重复输入密码的时候,可以通过这种方式。
(1)格式:cmd ---> 'echo password | sudo -S cmd'
eg:
|
1
|
[root@test ~]# sshpass -p 123456 ssh -o 'StrictHostKeyChecking no' yjt@192.168.4.50 'echo 123456 | sudo -S mkdir /backup' |
注:-S的意思是从标准输入读取密码
对于echo,dd等命令,可能会出现权限不够问题,如:
|
1
2
|
[root@test ~]# sshpass -p 123456 ssh -o 'StrictHostKeyChecking no' yjt@192.168.4.50 'echo 123456 | sudo -S echo hello > /backup/file'bash: /backup/file: Permission denied |
对于上述方式,解决办法如下:
(2)格式:cmd ---> 'echo password | sudo -S sh/bash -c "cmd"'
eg:
|
1
|
root@test ~]# sshpass -p 123456 ssh -o 'StrictHostKeyChecking no' yjt@192.168.4.50 'echo 123456 | sudo -S bash -c "echo hello > /backup/file"' |
[转帖]SSH交互式脚本StrictHostKeyChecking选项 benchmode=yes的更多相关文章
- SSH交互式脚本StrictHostKeyChecking选项 benchmode=yes
SSH 公钥检查是一个重要的安全机制,可以防范中间人劫持等黑客攻击.但是在特定情况下,严格的 SSH 公钥检查会破坏一些依赖 SSH 协议的自动化任务,就需要一种手段能够绕过 SSH 的公钥检查. 什 ...
- [转帖]自动交互式脚本--expect
自动交互式脚本--expect https://www.cnblogs.com/zhuiluoyu/p/4873869.html 我们经常会遇到一些需要与服务器程序打交道的场景,比如,从登陆某个服务器 ...
- 20181225-Linux Shell Bash环境下自动化创建ssh互信脚本
20181225-Linux Shell Bash环境下自动化创建ssh互信脚本 1. 我的Blog 博客园 https://www.cnblogs.com/piggybaba/ 个人网站 http: ...
- ansible api 调用出现ssh交互式输入
发现在删掉 ~/.ssh/know_hosts 之后运行 ansible api 会出现以下提示 The authenticity of host '10.1.*.* (10.1.*.*)' can' ...
- TCL自动化之SSH交互式
目前ssh工具很多,但是能够轻松运用到自动化脚本中,可以轻松适配任何环境,满足ssh交互式登录的tcl工具包很少 下面是个人在tcl自动化过程中比较满意的一款自动化脚本 通过使用管道方式分装plink ...
- shell脚本分为三类:登录脚本、交互式脚本、非交互式脚本
shell脚本分为三类:登录脚本.交互式脚本.非交互式脚本 一. 登录脚本类似于windows下的计算机设置中的登录脚本和账户设置下的登录脚本的合集(我是这么理解的哈). 其配置文件的关键词为pref ...
- 自动交互式脚本--expect
我们经常会遇到一些需要与服务器程序打交道的场景,比如,从登陆某个服务器,然后进行某项工作.这很平常,但是如果把这个工作自动化进行,你就需要一个程序能自动做你要告诉机器的事情,这样,我们的expect就 ...
- [转帖]SSH命令总结
SSH命令总结 ssh-keygen ssh-copy-id 等命令自己用过 但是知道的不系统 也知道 转发命令 但是也只是知道一点点... ttps://www.cnblogs.com/chenfa ...
- ssh 互通脚本
实现了 主机到指定机器的ssh免密码登录. 若要实现互通, 则在机器列表的每台机器上执行该脚本. 192.168.1.22 root test 192.168.1.25 root test 192.1 ...
- expect实现交互式脚本
#!/usr/bin/expect -f ##告诉解释器用expect来解释 set timeout 6 ##设置超时时间 ] ## 这个是传递给脚本的第一个参数,并把参数赋值给user ] ## 这 ...
随机推荐
- PC端和移动端应用的开发差异
PC端和移动端应用的开发差异主要体现在用户界面(UI)和用户体验(UX)设计.交互设计.性能优化.适配策略等方面.
- MySQL进阶篇:详解存储引擎介绍和基本使用
1. MySQL进阶篇:第一章__一.一_存储引擎介绍和基本使用 1.1 MySQL体系结构 1). 连接层 最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类 ...
- 身未动心已远,AI带你流浪地球
摘要:我们提供了一键运行的notebook AI作画 Dreambooth 生成自定义主体,可以在ModelArts平台上调试开发自己的文生图模型. 本文分享自华为云社区<DreamBooth+ ...
- IAP:物联网终端软件升级技术
摘要:IAP是利用自己的程序代码实现升级程序(新的APP)从外部接口(可以是串口.I2C.SPI.网口等等)写入到flash中,再通过flash读写操作,将新的APP覆盖原有APP程序,在重新从新的A ...
- Python图像处理丨图像缩放、旋转、翻转与图像平移
摘要:本篇文章主要讲解Python调用OpenCV实现图像位移操作.旋转和翻转效果,包括四部分知识:图像缩放.图像旋转.图像翻转.图像平移. 本文分享自华为云社区<[Python图像处理] 六. ...
- 一文带你熟知ForkJoin
摘要:ForkJoin将复杂的计算当做一个任务,而分解的多个计算则是当做一个个子任务来并行执行. 本文分享自华为云社区<[高并发]什么是ForkJoin?看这一篇就够了!>,作者:冰 河. ...
- 一文带你了解什么是GitOps
摘要:说起GitOps,可能很多朋友马上会联想到DevOps,那么GitOps和DevOps之间有什么关系.又有什么区别呢? 本文分享自华为云社区<浅谈GitOps>,作者: 敏捷的小智. ...
- 空间数据库基础理论 GIS空间数据处理分析涉及的基本概念
<空间数据库>课程整理汇总,106篇课程,内容太长,学习中,把一些关键点,汇总记下笔记 地理空间 GIS中的地理空间(Geo-spatial)是指经过投影变换后,在笛卡尔坐标系中的地球表层 ...
- Mac OS 安装mysqlcliet 失败问题解决
简单记录 Mac OS pip 安装mysqlclient报错处理过程 系统: python: Python 3.8.2 虚拟环境 直接安装 mysqlclient 会报错 Using cached ...
- Spark面试题(六)——Spark资源调优
Spark系列面试题 Spark面试题(一) Spark面试题(二) Spark面试题(三) Spark面试题(四) Spark面试题(五)--数据倾斜调优 Spark面试题(六)--Spark资源调 ...