SSHD服务安全的连接
SSHD服务
- SSH 安全的远程连接
- OpenSSH 工具
- centos服务端的包:openssh-server
- centos客户端的包:openssh-clients
- 主要配置文件一般安装完成后再/etc/ssh/sshd_config
- 在/usr/lib/systemd/system/下分别有sshd.service .socket
- 更改默认的访问端口:修改配置文件sshd_config PORT 后的数值进行更改
- 后来看到了一个不错的关于配置文件的文章 ——>https://blog.csdn.net/ChenVast/article/details/72621086
- 版本:更新到了v2版本
- dorpbear :一个2m左右的基于ssh的工具
windows客户端的工具 xshell SecureCRT putty等
SSH为什么安全
- 通讯过程简介
- 客户端连接服务端的时候,服务端会发送一个自己的公钥和一个会话ID
- 利用会话ID与客户端的公钥 异或 出来一个 Res 然后利用服务器的公钥加密res ,之后将其发送给服务器端,
- 服务器拿到res后,利用会话ID得到了客户端的公钥,
- 当双方同时拥有了对方的公钥的时候,就利用公钥生成一个对称加密的key
- 之后的数据传输就用生成的对称加密key来解密传输的data
- 问题:第一次连接的时候就会容易中间人攻击,所以第一次连接的时候就会传输一个设备“指纹”,只要确认了对方的设备“指纹”完成了第一次的确认后就完全保证了传输的安全性(需要人为的比对“指纹”)
- 设备“指纹”来历:客户端的公钥通过哈希算法(sha256,512)之后得到的结果,最终放在客户端的/etc/ssh下的ssh_host_rsa_key.pub 文件
如果在设备更换的时候,ip没更换,此时可以清除服务端家目录.ssh文件下的 known_hosts文件内,可以删除在这个文件内对应ip的公钥行删除即可
SSH客户端用法与配置
- 配置文件 /etc/ssh/ssh_config (修改StrictHostKeyChecking no 可以设置第一次登录确认的yes不用确认)
- 默认以root身份连接,可在ip前面加上登录用户名连接
- 并可以在连接是只执行一条命令:ssh ip 命令:ssh root@192.168.47.25 cat /etc/passwd,之后会在客户端显示结果
- 更改访问端口-p和以指定网卡地址访问目标-bip:ssh -b 指定ip root@ip -p 端口号
- X11转发
- 在linux中图形不是系统的必备组件,其交互工具为shell,之前随笔说过
- X11工作过程:客户端请求服务器的的Xclient将数据传输到客户机的Xserver上,从而调用客户端的GPU来画出服务器端的桌面
- 基于x11协议远程连接执行 ssh -x ip 创建图形的命令
- 强制伪tty分配 ssh -t ip ssh -t ip ssh ip (口令还是要逐个输入)
- SSHPASS (工具需要下载,且需要在第一次连接之后,中途会有连接确认的交互)
- 语法:sshpass -p password ssh user@ip
- 调用文件当密码: sshpass -f file ssh user@ip 可设置文件权限来保障
环境变量 export SSHPASS = password ; sshopass -e ssh user@ip command (环境变量名必须是这个,连接后可在后面执行命令)
基于key验证实现全网访问
- 使用方法:
- 所有客户端生成自己的公钥私钥对 ssh-keygen (可加-算法 使用固定算法) 会在用户家目录.ssh目录下生成一个公钥私
钥文件
- 所有客户端生成自己的公钥私钥对 ssh-keygen (可加-算法 使用固定算法) 会在用户家目录.ssh目录下生成一个公钥私
- 默认.ssh文件夹不会存在,所以使用ssh -copy-id 用户@目标ip 然后输入对方密码,就会在目标的机器的对应用户的家目录生成.ssh文件夹下存放自己的私钥并改名为authorized.key的文件,用来存放所有的公钥,其中每一行代表一条公钥
- 然后将自己的.ssh目录拷贝到所有需要用的机器上, 之后就可以实现基于key的验证(需要将之前的公钥私钥都放在目标生成的anthorized.key文件下然后打包拷贝)
最后完成的家目录下.ssh目录包含的文件有:id.rsa id.rsa.pub (第一个生成的私钥公钥) + anthourized.key(公钥库文件)
SCP+rsync拷贝
- 语法:scp /[option] 需要复制的文件 user@ip:放到目标主机的目录位置
- 复制文件夹: scp -r /data/ts root@192.168.47.25:/data
- -q 复制静默模式
- -P 指明remote host 端口(如果对方更改了scp的端口)
- -p 保持文件的原来属性(小写的p)
- 明显缺陷:复制文件的时候 不检验文件,就算没有改变过的文件也直接复制过去替换,直接占用带宽重新完全复制一遍,
- rsync 增量复制
- rpm -q rsync (来自于rsync这个包)
- 快速的网络复制工具:原因是这个工具可以比较文件的不同,然后只更改文件不同的地方,
- 语法 :1 rsync -a /data/ts user@ip /data |2 rsync -a /data/ts/ user@ip:/data 后者会复制文件夹本身 -a 代表了很多的选项组合详情自己搜索
--delete 用法rsync -a --delete /data/ts user@ip /data (会在复制本地文件到目标主机的文件夹下,复制的文件夹中不存在的文件就删除)
SSHFS远程目录挂载:
- sshfs :yum install sshfs (eple源) 安装这个包(fuse-sshfs)
- 基础语法:sshfs ip: 目标目录 本地挂载目录
sshfs 192.168.47.129:/data /mtda (需要在本机上创建一个挂载目录mtda)
PSSH轻量级的自动化运维工具
- yum install pssh (rpm -q pssh 包 )
- 默认已经基于key验证
- 语法: pssh -H ip 命令字符串(特殊命令就会在本机执行而不是在远程主机执行,所以需要将命令变成字符串,然后到目标主机后就成了相应命令)
- 例: pssh -H 192.168.47.129 -H 192.168.47.25 -i hostname (能够同时执行后面跟的命令,-i 显示结果)
- h 使用文件,文件中包含需要执行的ip 逐个换行:192.168.47.129 换行192.168.47.25换行....
- 命令过长报错处理: pssh -h ipfile.txt -i "长命令"
- 其他参数-H:主机字符串,内容格式”[user@]host[:port]”
- -h file:主机列表文件,内容格式”[user@]host[:port]”
- -A:手动输入密码模式
- -i:每个服务器内部处理信息输出
- -l:登录使用的用户名
- -p:并发的线程数【可选】
- -o:输出的文件目录【可选】
- -e:错误输出文件【可选】
- -t:TIMEOUT 超时时间设置,0无限制【可选】
- -O:SSH的选项
- -P:打印出服务器返回信息
- -v:详细模式
- --version:查看版本
- pscp.pssh 将本机文件批量复制到远程主机上去 (pssh内置工具)
pslurp 将远程文件复制到本机的文件 (pssh内置工具)
SSH 端口转发隧道功能
- ssh在与服务端通讯过程中也可以实现将别的端口的数据通过ssh来传输,这样建立的数据通讯被称为隧道,数据通过安全的ssh协议进行传输在这个条件之下就成就了ssh的其他功能
- 加密ssh服务端与客户端的数据传输
- 成功的突破的防火墙的限制,使数据可以通过ssh建立的隧道来传输防火墙以外的数据
- 功能转发:ssh -L 端口号 最终需要连接的服务器:端口 跳板机 (三种转发)
- ssh -L 9527:192.168.47.130:8080 192.168.47.25 -f (本机ip192.168.47.15,-f 后台运行)就实现好了隧道的建立
此时访问自己的这个端口就能通过ssh服务与对方进行数据通讯,在这里贴一个对于ssh描述不错的帖子,传送门——>https://blog.csdn.net/Yaokai_AssultMaster/article/details/85773671
SSHD服务安全的连接的更多相关文章
- SSHD服务搭建
SSH协议:安全外壳协议.为Secure Shell 缩写.SSH为建立在应用层和传输层基础上的安全协议. 1.检查SSH服务端安装情况 [root@rhel6_84 ~]# rpm -qpi / ...
- 开源服务专题之------sshd服务安装管理及配置文件理解和安全调优
本专题我将讨论一下开源服务,随着开源社区的日趋丰富,开源软件.开源服务,已经成为人类的一种公共资源,发展势头可谓一日千里,所以不可不知.SSHD服务,在我们的linux服务器上经常用到,很重要,涉及到 ...
- BackTrack 5 开启SSHD服务
BackTrack 5 开启SSHD服务 1 service ssh start 但启动后,仍然无法从远程连接,会有提示: 1 Read from socket failed: Connection ...
- Fedora 启动sshd服务:
.先确认是否已安装ssh服务: [root@localhost ~]# rpm -qa | grep openssh-server openssh-server-.3p1-.fc12.i686 (这行 ...
- kaili开启sshd服务
使用xshell远程连接kali 2.0时要开启kaili上的sshd服务,具体方法如下: 命令: vim /etc/ssh/sshd_config # Package generated confi ...
- sshd服务---暴力破解应对策略
sshd服务暴力破解步骤 sshd暴力破解方法 防止暴力破解调优 1. 变更默认端口 2. 变更root用户 3. 日志监控-->防止暴力破解(fail2ban应用) fail2ban详解 在初 ...
- 末学者笔记--SSHD服务及SCP用法
sshd服务讲解 1.SSHD服务 介绍:SSH 协议:安全外壳协议.为 Secure Shell 的缩写.SSH 为建立在应用层和传输层基础上的安全协议. 默认端口22 作用: sshd服务使用SS ...
- 《linux就该这么学》第十一节课: 第九章,网卡绑定与sshd服务
8.4.服务的访问控制列表 TCPwrappers是RHEL7中默认启用的流量监控程序,能够对服务做出允许或拒绝. TCPwrappers服务由两个文件控制: /etc/hosts.allow ...
- sshd服务
SSHD服务 介绍:SSH 协议:安全外壳协议.为 Secure Shell 的缩写.SSH 为建立在应用层和传输层基础上的安全协议. 作用 sshd服务使用SSH协议可以用来进行远程控制, 或在计算 ...
随机推荐
- 在Mac上搭建带ssl协议和域名指向的Apache服务器
顾名思义,就是要在苹果电脑上搭建 Apache 服务器,并且支持 https 协议,能用指定域名访问(有些开发调试需要注册域名,比如调试微信JS-SDK),当然最好能在手机端进行调试.首先,Mac 系 ...
- 第二篇 python进阶
目录 第二篇 python进阶 一 数字类型内置方法 二 字符串类型内置方法 三 列表类型内置方法(list) 四 元组类型内置方法(tuple) 五 字典内置方法 六 集合类型内置方法(self) ...
- Mysql高手系列 - 第24篇:如何正确的使用索引?【高手进阶】
Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 欢迎大家加我微信itsoku一起交流java.算法.数据库相关技术. 这是Mysql系列第24篇. 学习索引,主要是 ...
- Linux内核版本介绍与查询
Linux内核版本命名在不同时期有着不同的规范,在涉及到Linux版本问题时经常容易混淆,主线版本/稳定版/长期支持版本经常搞不清楚,本文主要记录下内核版本命名的规则以及如何查看Linux系统版本信息 ...
- 基于STM32F429和HAL库的CAN收发例程
1.CAN协议介绍 CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO 国际标准化的串行通信协议.在当前的汽车产业中,出于对安全性.舒适性.方便性.低公 ...
- OFD电子文档阅读器功能说明(采用WPF开发,永久免费)
特别说明 ofd阅读器开发语言为c#,具有完全自主产权,没有使用第三方ofd开发包.可以根据你的需求快速定制开发.本阅读器还在开发完善阶段,如有任何问题,可以联系我QQ:13712486.博客:htt ...
- 正确理解IM长连接的心跳及重连机制,并动手实现(有完整IM源码)
1.引言 说道“心跳”这个词大家都不陌生,当然不是指男女之间的心跳,而是和长连接相关的.顾名思义就是证明是否还活着的依据. 什么场景下需要心跳呢?目前我们接触到的大多是一些基于长连接的应用需要心跳来“ ...
- NOIP2018提高组初赛游记
AH省的,好像水军多,走的都比较早(莫非是真·大佬!!) 本人考了71,较去年退步了.(去年还考80多的来着) 题目坑.. 第一.二大题选择 第三题年份,看了试卷标题,第二十二届,算出来后没有这个选项 ...
- Redis事务深入解析和使用
作为关系型数据库中一项非常重要的基础功能--事务,在 Redis 中是如何处理并使用的? 1.前言 事务指的是提供一种将多个命令打包,一次性按顺序地执行的机制,并且保证服务器只有在执行完事务中的所有命 ...
- jenkins pipeline 流水线生产
jenkins pipeline : pipeline { agent any parameters { string(name: 'git_version', defaultValue: 'v1.1 ...