ssh服务使用介绍二
老司机开车了
快上车




上文提到当我们使用ssh远程链接主机的时候,会出现询问的提示,如果我们链接的机器多了,一遍一遍的输入是不是很麻烦?怎么解决如下
vim /etc/ssh/ssh_config
如图

小案列
1、远程链接图形化命令
有两台主机,192.168.43.6与192.168.43.7我当前用的是6,去链接远方主机7,而7这台主机是运行在命令行界面的系统。当我们执行
ssh 192.168.43.7
#
#
#
#
链接上7后执行随便一个可打开的图形执行命令,这里我们用system-config-user会出现如图

这样是不行的,我们应该这样做
ssh -X 192.168.43.7
#
#
#
#
再执行system-config-user命令就OK了
备注:有人会想远方主机都没开图形化,怎么能打开图形界面?
因为我们调用的是当前主机的显卡,不是远方的。
2、跳转链接主机,比如我们有三台机器分别是
192.168.43.6
192.168.43.7
192.168.43.17
当前用的是6这台要去链接7,而7拒绝了6的链接。
说明:而192.168.43.17可以链接到192.168.43.7
这时候我们只需要一条命令就OK,如下
ssh -t 192.168.43.17 ssh 192.168.43.7
#
#这里如果中间间隔了2台 就这么写
#ssh -t x.x.x.x ssh -t x.x.x.x ssh x.x.x.x
#
基于密钥验证登陆
流程
1、首先在客户端生成一对密钥(ssh-keygen)
2、将客户端的公钥传送给服务器端(ssh-copy-id)
3、客户端再次发送链接求情,这里面报告用户名,密码等
4、服务端收到信息后,会去查看有没有信息,信息存放位置(ssh/authorized_keys)如果有,会生成一个随机数。
5、然后用用户拷贝过来的公钥对这个随机数加密并发送给客户端。
6、客户端接收到服务端发来的信息,并用私钥解密得到随机数,然后发送给服务端。
7、服务端收到客户端发来的字符数,并于和之前的随机数对比,如果一致就建立链接,无需输入用户名密码。不一致拒绝链接。
配上原理图如下

小案例
比如两台主机分别是192.168.43.6和192.168.43.7
我们当前用的是192.168.43.6用密钥认证链接192.168.43.7
1、首先在客户端上生成一对钥匙,其中要把公钥传给对方,生成钥匙指令如下
ssh-keygen
#
#
#

查看下是不是生成了钥匙如图

2、把刚才生成的公钥传到对方主机192.168.43.7
ssh-copy-id -i .ssh/id_rsa.pub 192.168.43.7
也可以这么写
ssh-copy-id 192.168.43.7
#因为用的是默认加密方式rsa
备注:传过去的文件存放在 家目录的.ssh目录下的authorized_keys里
3、下面就可在自己的192.168.43.6机器键入ssh 192.168.43.7 就可,无需输入密码了
备注:在公司里前运维走了,你当上任,改进把root密码改了,对方还是能连,因为密钥认证还在,
要想不让对方链接,删除这个文件authorized_keys
备注:这样就可与批量链接主机,把自己主机公钥传到你要控制的主机就OK
这里虽然我们不需要输入账号密码来登入,但需要你来输入密钥加密的口令登陆。
想一想
比如有100台机器,输入100次私钥的口令也是比价麻烦的,这时怎么办?
有办法,设置代理就可解决。
托管代理链接
把密钥的口令托管给代理执行如下命令
ssh-agent bash
ssh-add
#
#
#
如图

备注:当前用户退出再次登陆链接,还是是输入口令。
小案例
1、三台主机之间互相基于密钥链接,192.168.43.6、192.168.43.7、192.168.43.17三台主机,互相链接。
思路:以综上来看,是不是6公钥发给7、17而7也要发给6、17,17也要发给6、7,对吧,这样就可互相链接了把,钥匙主机10几台是不是很麻烦,
我们用另一种方式,所有主机用同一对钥匙来实现,基本思路一样。
1)首先生成一对钥匙
ssh-keygen
#输入位置
#输入口令
#

2)在当前主机生成authorized_keys文件

3)将公钥私钥和authorized_keys文件传给目标主机

4)到此结束,测试实验结果

无需输入密码
2、在堡垒机器上实现基于K的验证(单项链接)expect 实现批量的ssh-key
思路:还是生成密钥对,把公钥传给目标主机,因为100台主机太多,而且还是重复性的动作,所有我们利用脚本,而我们传送公钥到目标主机的时候是需要输入账号密码的,这里我们就要利用之前的一个命令expect来实现。
1)首先准备目标主机的IP地址,账号,密码TXT本

2)编写脚本
#!/bin/bash
if [ ! -f /root/.ssh/id_rsa ];then
#生成一对钥匙,指定加密方式与存放位置,-t是指定加密的方式,-p是指定口令,-f指定存放位置
ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa &>/dev/null && echo "ssh key 生成成功"
else
echo "已存在无需再次生成"
fi
#既然钥匙生成成功那么是不是改把公钥传到目标主机了
#读取之前准备的目标主机地址列表,既然是逐行处理是不是想到了while read line
while read line;do
ip=`echo $line|awk '{print $1}'`
user=`echo $line|awk '{print $2}'`
password=`echo $line|awk '{print $3}'` expect <<-EOF
set timeout 50
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$password\n" }
}
expect eof
EOF
echo "$ip is 复制成功"
done < hostist.txt
#####hostist.txt和我脚本在同一个目录
3、完事执行脚本OK,再去ssh链接,无需密码
欢迎补充
独乐乐不如众乐乐

ssh服务使用介绍二的更多相关文章
- ssh服务介绍及配置
一.ssh介绍 1.什么是 ssh ssh 是 Secure Shell 的缩写,是一个建立在应用层上的安全远程管理协议.ssh 是目前较为可靠的传输协议,专为远程登录会话和其他网络服务提供安全性.利 ...
- Linux之ssh服务介绍
一.什么是SSH? 简单说,SSH(Secure Shell Protocol)是一种网络协议,用于计算机之间的加密登录.在默认状态下SSH服务提供俩个服务功能,一个是提供类似telnet远程联机服务 ...
- ssh服务介绍
基本介绍 ssh:安全的远程登陆 要有客户端与服务器端,客户端主动链接服务端,那么服务端地址是不能变的. socket:套接字 标识应用唯一的地址 tcp/udp port端口号 cat /etc/s ...
- ssh远程管理服务的介绍
第6章 远程管理的介绍 6.1 服务的概念介绍 6.1.1 ssh和telnet服务的相同和不同点 ssh: 服务端口号为22 在数据传输的时候是加密的传输 一般在互联网中使用,可以使用root账号进 ...
- 微服务系列(二)GRPC的介绍与安装
微服务系列(二)GRPC的介绍与安装 1.GPRC简介 GRPC是Google公司基于Protobuf开发的跨语言的开源RPC框架.GRPC基于HTTP/2协议设计,可以基于一个HTTP/2链接提供多 ...
- Kubernetes-Service介绍(二)-服务发现
前言 本篇是Kubernetes第九篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战. Kubernetes系列文章: Kubernetes介绍 Kubernetes环境搭建 Kuberne ...
- 第1章 ssh和SSH服务(包含隧道内容)
本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种功能,相信能让各位对ssh有个全方位较透彻的了解,而不是仅仅只会用它来连接远程主机. 另外,本人翻译了ssh客户端命令的 ...
- 如何搭建ssh服务?
为了日后便于查询,本文所涉及到的所有命令集合如下: rpm -qa | grep openssh #查看是否安装了openssh软件 service sshd status #服务端的ssh状态 if ...
- 第1章 ssh命令和SSH服务详解
基础服务类系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 本文对SSH连接验证机制进行了非常详细的分析,还详细介绍了ssh客户端工具的各种 ...
随机推荐
- 黑客攻防技术宝典web实战篇:Web 应用程序技术习题
猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. OPTIONS 方法有什么作用? OPTIONS 方法要求服务器报告可用于特定资源的 HT ...
- Springboot配置类
配置类 MyAppConfig import com.test.springboot.service.HelloService; import org.springframework.context ...
- 揭开Python科学计算的面纱
春牛春杖.无限春风来海上.便与春工.染得桃红似肉红. 春幡春胜.一阵春风吹酒醒.不似天涯.卷起杨花似雪花. 标准的Python中用列表保存一组值,可以当做数组使用,但是由于其值类型任意,所以列表中保存 ...
- python中时间日期格式化符号的含义
%y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12 ...
- [已读]HTML5与CSS3设计模式
我想说,不要被书名骗了,其实并没有涉及丁点h5与css3的内容,但是确实称得上比较详细的一本关于css的书.看它的页数就知道了,481~~ 今年上半年看完的,现在想想,觉得自己还是蛮拼的.内容会比较枯 ...
- 你不知道的border-radius
对于border-radius这个属性,我们知道它可以用来设置边框圆角,利用它我们可以画出很多形状 这就需要了解到border-radius的各式写法: border-radius的写法: 1.只设置 ...
- RHEL 6.5----LVS(DR)
主机名 IP 所需软件 master eth0==>192.168.30.140(Nat) eth0:1==>192.168.17.130(Nat) ipvsadm node-1 et ...
- Unity Mesh 初体验
什么是Mesh Mesh是Unity中的一个组件,称为网格组件.通俗的讲,Mesh是指模型的网格,3D模型是由多边形拼接而成,而一个复杂的多边形,实际上是由多个三角面拼接而成.所以一个3D模型的表面是 ...
- P2712 摄像头
题目描述 食品店里有n个摄像头,这种摄像头很笨拙,只能拍摄到固定位置.现有一群胆大妄为的松鼠想要抢劫食品店,为了不让摄像头拍下他们犯罪的证据,他们抢劫前的第一件事就是砸毁这些摄像头. 为了便于砸毁摄像 ...
- css实现行内文字垂直居中
之前本人一直使用浮动.相对定位.绝对定位和display:table等css的方法进行定位.网上得知flex可实现弹性布局,符合未来发展趋势,随尝试. 1:让盒子行内文字垂直居中,解决思路是讲文字的行 ...