【运维知识进阶篇】集群架构-SSH服务详解

本文涉及的产品
运维安全中心(堡垒机),免费版 6个月
运维安全中心(堡垒机),企业双擎版 50资产 7天
简介: 【运维知识进阶篇】集群架构-SSH服务详解

SSH是一个安全协议,在数据传输时候会把数据包进行加密处理,确保数据安全。SSH服务可以提供远程连接服务器的服务,对传输的数据进行加密,除了ssh,Telnet也可以提供远程连接服务。但是Telnet是明文,监听端口是23,且不支持root用户登录。

本篇文章给大家介绍SSH服务相关内容,包括ssh常用命令、scp命令、ssh验证方式、秘钥认证流程、秘钥远程连接服务器、Windows生成秘钥实现连接Linux、ssh远程执行命令、免交互expect、免交互sshpass。

1、SSH相关命令

ssh有客户端与服务端,这种模式称为C/S架构,ssh客户端支持windows、linux、mac等平台。在ssh客户端中包含ssh|slogin远程登陆、scp远程拷贝、sftp文件传输、ssh-copy-id秘钥分发等程序。

SSH远程登录服务器

1. Linux连接Linux服务器
2. 
3. ssh -p22 root@10.0.0.6
4. 
5. #    -p指定连接远程主机端口,默认22端口可以忽略
6. #    @前面为用户名,如果用当前用户连接,可以不指定用户
7. #    @后面可以为ip,也可以为用户名,用户名需要做hosts解析

SCP命令

1. #  -P 指定端口,默认22端口可不写    scp -P2222 test.txt 172.16.1.31:/opt/
2. #  -r 递归拷贝目录                 scp -r koten 172.16.1.31:/root
3. #  -p 在拷贝文件前后保持文件或目录属性不变    
4. #  -l 限制传输使用宽带(默认kb)
5. 
6. 推送:scp 本地文件 远端服务器的哪个位置
7. 
8. scp test.txt 172.16.1.31:/root/
9. 
10. 拉取:scp 远端服务器的文件,拷贝到本地哪个位置
11. 
12. scp 172.16.1.31:/etc/hosts /opt
13. 
14. #限速
15. [root@Web01 ~]# scp /opt/1.txt root@172.16.1.31:/tmp
16. root@172.16.1.31 password: 
17. test                        100%  656MB  '83.9MB/s'   00:07
18. #限速为8096kb,换算为MB,要除以 8096/8=1024KB=1MB
19. [root@Web01 ~]# scp -rp -l 8096  /opt/1.txt root@172.16.1.31:/tmp
20. root@172.16.1.31s password: 
21. test                        7%   48MB   '1.0MB/s'   09:45
22. 
23. 
24. 总结:
25. 1、scp通过ssh协议加密方式进行文件或目录的拷贝
26. 2、scp连接时的用户作为拷贝文件或目录的权限
27. 3、scp支持数据的推送和拉取,但是每次都是全量拷贝,效率较低

sftp远程数据传输命令

1. #默认可以通过sftp命令连接sftp服务
2. sftp root@10.0.0.8
3. sftp -oPort=52113 root@10.0.0.8    #sftp的特殊端口连接
4. 
5. #sftp使用get下载文件至本地服务器
6. sftp > get conf.txt /tmp/
7. 
8. #sftp使用put上传本地服务器文件至远程服务器
9. sftp > put /root/1.txt /root/

2、SSH验证方式

1、基于验证密码远程登录(不安全,可能会被破解)

1. ssh -p22 root@10.0.0.8
2. root@10.0.0.8 password:

2、基于秘钥远程登录(一般使用这种)

秘钥认证流程

SSH秘钥认证过程相当于自己钥匙开自己锁,钥匙只有客户端有,锁只有服务端有,一般叫做这个为秘钥对。

客户端ssh-keygen生成秘钥对,公钥id_rsa.pub是锁,私钥id_rsa是钥匙

1、客户端发送公钥给服务端(服务端会存放客户端的公钥至如下路径~/.ssh/authorized_keys,默认没有.ssh目录,有的话可能是保存了个known_hosts,是保存了默认yes,有的话远程连接就不用输入yes了)

2、客户端通过ssh协议连接服务端

3、服务端返回公钥询问

4、客户端使用私钥解密

5、秘钥验证通过,即可连接

创建密钥

ssh-keygen -t rsa #生成秘钥对 默认rsa加密 或者ssh-keygen,后面所有参数可以省略,一直回车即可。-t指定秘钥类型,-C koten ,可以在你的秘钥后面加点东西。

查看密钥

1. ll .ssh/id_rsa .ssh/id_rsa.pub #.ssh/id_rsa是钥匙,权限是600, .ssh/id_rsa.pub是锁头
2. 
3. 注意:如果可以正常通过秘钥方式远程连接 目录权限以及秘钥对的权限必须正确
4. 
5. root权限必须是500,.ssh必须为700,秘钥必须为600,锁头是644,锁头需要看服务器的文件权限
6. 
7. 在31服务器查看公钥文件,权限必须是600
8. 
9. ll .ssh/
10. 
11. 注意:不适用ssh-copy-id,可以直接复制公钥到31服务器上手动创建authorized_keys,并授权为600权限。
12. 
13. 拷贝过后就实现了秘钥方式登录,如果切换到普通用户就不可行了,需要再生成秘钥对
14. 
15. 也可以一个客户端的公钥发给好多服务端

推送密钥

1. #分发秘钥,将A服务器的公钥写入B服务器
2. ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.8
3. ssh-copy-id    #命令
4. -i             #指定下发公钥的路径
5. root           #以什么用户身份进行公钥分发,如果不输入,表示以当前系统用户身份分发公钥
6. 10.0.0.8       #下发公钥至那台服务器,填写远程主机IP地址

远程连接测试

1. #远程登录远端主机的方式
2. ssh root@172.16.1.31    #秘钥分发后直接切换主机
3. 
4. #不登录远程主机,但可以对远程主机执行命令
5. ssh root@172.16.1.41 "hostname -i"
6. 172.16.1.41
7. 
8. ssh 172.16.1.7 '可执行的命令' 里面有单引号,外面就弄成双引号,单引双引都有,就在目标主机上写脚本,远程执行脚本
9. 
10. 也可以使用图形化脚本,命令写在底层

3、SSH场景实践

跳板机

用户可以通过Windows、MAC、Linux客户端连接跳板机,实现免密码登录;跳板机连接后端无外网的Linux主机实现远程登录,实现多用户(开发、运维、测试)可以登录单台服务器(跳板机)无密码,单用户(跳板机)登录多台服务器(web、nfs、mysql...)无密码的效果。

windows通过10.0.0.31连接web服务器

NFS(10.0.0.31、172.16.1.31)、web01(172.16.1.7)、web02(172.16.1.8)

1、在NFS生成秘钥对

2、将公钥拷贝到目标主机 7和8 中间需要7和8的服务器密码

3、拷贝好后测试连通性

4、windows通过31跳板机连接7和8,一个主机一个xshell会话,可以通过xshell登录脚本,自动ssh

Xshell生成秘钥对上传到31服务器

1、工具-->新建用户秘钥-->添加-->属性-->公钥-->复制到目标主机~/.ssh/authorized_keys中

禁止root登录,秘钥就会自动弹出来,就是没有输入用户名的界面

NFS先禁止root登录(38行),禁止使用密码(65行),创建koten用户,创建密码,Windows密钥拷贝到NFS的koten用户 su-root 再去连接172.16.1.7或172.16.1.8

SSH安全优化

SSH作为远程连接服务,我们需要考虑该服务的安全,所以需要对该服务进行安全方面的配置

1、更改远程连接登录的端口

2、禁止root管理员直接登录

3、密码认证方式改为秘钥认证

4、重要服务不使用公网IP地址

5、使用防火墙限制来源IP地址

1. [root@Web01 ~]# cat /etc/ssh/sshd_config
2. ###SSH###
3. #Port 6666                      # 变更SSH服务远程连接端口
4. #PasswordAuthentication no      # 禁止使用密码直接远程登录
5. #PermitRootLogin no             # 禁止root用户直接远程登录
6. GSSAPIAuthentication no         # 禁止GSS认证,减少连接时产生的延迟
7. UseDNS no                       # 禁止ssh进行dns反向解析,影响ssh连接效率参数

免交互expect

1. 1、安装expect
2. yum install -y expect
3. 
4. 2、编写expect脚本
5. 
6. #!/usr/bin/expect
7. set ip 10.0.0.51
8. set pass 123456
9. set timeout 30
10. spawn ssh root@$ip
11. expect {
12. "(yes/no)" {send "yes\r"; exp_continue}
13. "password:" {send "$pass\r"}
14. }
15. expect "root@*"  {send "df -h\r"}
16. expect "root@*"  {send "exit\r"}
17. expect eof

免交互sshpass

1. 1、安装sshpass
2. yum install -y sshpass
3. 
4. 2、sshpass命令
5. sshpass -p 123456 ssh root@10.0.0.51
6. 
7. -p:指定密码
8. -f:从文件中取密码
9. -e:从环境变量中取密码
10. -P:设置密码提示

我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

目录
相关文章
|
2月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
22天前
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
73 14
|
3月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
3月前
|
存储 NoSQL Redis
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 +  无锁架构 +  EDA架构  + 异步日志 + 集群架构
|
4月前
|
并行计算 PyTorch 算法框架/工具
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。
279 3
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
|
4月前
|
存储 SQL 并行计算
【赵渝强老师】达梦数据库MPP集群的架构
达梦数据库提供大规模并行处理(MPP)架构,以低成本实现高性能并行计算,满足海量数据存储和复杂查询需求。DM MPP采用完全对等无共享体系,消除主节点瓶颈,通过多节点并行执行提升性能。其执行流程包括主EP生成计划、分发任务、各EP并行处理及结果汇总返回。为确保高可用性,建议结合数据守护部署。
107 0
|
6月前
|
人工智能 运维 Linux
AI驱动的操作系统服务体验:大模型时代的运维革新
AI驱动的操作系统服务体验:大模型时代的运维革新
135 5
|
7月前
|
运维 监控 Cloud Native
云原生之运维监控实践:使用 taosKeeper 与 TDinsight 实现对 时序数据库TDengine 服务的监测告警
在数字化转型的过程中,监控与告警功能的优化对保障系统的稳定运行至关重要。本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品之一,详细介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监控与告警功能。作者通过容器化安装 TDengine 和 Grafana,演示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、以及如何设置告警规则和通知策略。欢迎大家阅读。
234 0
|
7月前
|
存储 负载均衡 监控
揭秘 Elasticsearch 集群架构,解锁大数据处理神器
Elasticsearch 是一个强大的分布式搜索和分析引擎,广泛应用于大数据处理、实时搜索和分析。本文深入探讨了 Elasticsearch 集群的架构和特性,包括高可用性和负载均衡,以及主节点、数据节点、协调节点和 Ingest 节点的角色和功能。
231 0
|
8月前
|
安全 Linux Shell
ssh 远程控制服务
SSH(Secure Shell)是一种用于远程登录的安全协议,相比FTP和Telnet,它提供了更高的安全性,避免了明文传输带来的风险。要使用SSH远程管理Linux系统,需要配置sshd服务。本文介绍了如何克隆Linux服务器、修改网络配置,并通过SSH连接两台服务器,最后在目标服务器上创建一个日志文件。
163 5

热门文章

最新文章