SSH远程管理服务

devtools/2024/11/9 17:08:52/

什么是SSH服务器

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程 复制等功能。SSH 协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的用户口令,SSH 为建立在应用层和传输层基础上的安全协议。对数据进行压缩,加快传输速度。

ssh服务的优点

  • 数据传输是加密的,可以防止信息泄漏

  • 数据传输是压缩的,可以提高传输速度

ssh原理

  • 客户端发起链接请求

  • 服务端返回自己的公钥,以及一个会话ID(这一步客户端得到服务端公钥)

  • 客户端生成密钥对

  • 客户端用自己的公钥异或会话ID,计算出一个值Res,并用服务端的公钥加密

  • 客户端发送加密值到服务端,服务端用私钥解密,得到Res

  • 服务端用解密后的值Res异或会话ID,计算出客户端的公钥(这一步服务端得到客户端公钥)

  • 最终:双方各自持有三个秘钥,分别为自己的一对公、私钥,以及对方的公钥,之后的所有通讯都会被加密

命令登录:

此时是要使用密码的但我们可以直接密钥登录即可无需密码具体原理如下:

  1. 客户端发起ssh请求,服务器会把自己的公钥发送给用户

  2. 用户会根据服务器发来的公钥对密码进行加密

  3. 加密后的信息回传给服务器服务器用自己的私钥解密,如果密码正确,则用户登录成功

第一步生成密钥此处要填写的部分分别是生成文件位置密钥密码我们直接空格即可

发送密钥:直接登录即可:

 

#免密登录脚本


#!/bin/bash
PASS=123123
#设置网段最后的地址,4-255之间,越小扫描越快
END=254

IP=`ip a s ens33 | awk -F'[ /]+' 'NR==3{print $3}'`
NET=${IP%.*}.

rm -f /root/.ssh/id_rsa
[ -e ./SCANIP.log ] && rm -f SCANIP.log
for((i=3;i<="$END";i++));do
ping -c 1 -w 1  ${NET}$i &> /dev/null  && echo "${NET}$i" >> SCANIP.log &
done
wait

ssh-keygen -P "" -f /root/.ssh/id_rsa
rpm -q sshpass || yum -y install sshpass
sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no $IP

AliveIP=(`cat SCANIP.log`)
for n in ${AliveIP[*]};do
sshpass -p $PASS scp -o StrictHostKeyChecking=no -r /root/.ssh root@${n}:
done

ssh服务的最佳实践

  1. 建议使用非默认端口 22

  2. 禁止使用protocol version 1

  3. 限制可登录用户 白名单

  4. 设定空闲会话超时时长

  5. 利用防火墙设置ssh访问策略

  6. 仅监听特定的IP地址 公网 内网

  7. 基于口令认证时,使用强密码策略,比如:tr -dc A-Za-z0-9_ < /dev/urandom | head -c 12| xargs

  8. 使用基于密钥的认证

  9. 禁止使用空密码

  10. 禁止root用户直接登录

  11. 限制ssh的访问频度和并发在线数

  12. 经常分析日志 分离

配置文件的位置

  • 服务端主程序:/usr/sbin/sshd
  • 服务端配置文件:/etc/ssh/sshd_config
  • 客户端配置文件:/etc/ssh/ssh.config

配置文件的含义

认证与连接设置

  • ForwardAgent no:禁止代理转发,即不允许SSH代理来转发本地机器上的SSH密钥。
  • ForwardX11 no:禁用X11转发(X11是Linux/Unix系统的图形界面标准)。
  • RhostsRSAAuthentication no:不使用基于.rhosts文件和RSA公钥的认证方式。
  • RSAAuthentication yes:允许RSA公钥认证。
  • PasswordAuthentication yes:允许使用密码进行认证。
  • HostbasedAuthentication no:禁用基于主机的认证。
  • GSSAPIAuthentication no:不使用通用安全服务API (GSSAPI) 进行认证。
  • BatchMode no:非批处理模式,即不是自动模式,通常在需要交互式登录时使用。
  • CheckHostIP yes:检查连接的服务器IP与已知host文件中的IP是否一致。
  • StrictHostKeyChecking ask:如果服务器的主机密钥未知或发生变化,则询问用户是否继续连接。

文件和加密设置

  • IdentityFile ~/.ssh/identity等:指定用于认证的密钥文件路径。
  • Port 22:指定SSH连接使用的端口,标准SSH端口为22。
  • Protocol 2:指明使用SSH协议版本2。
  • Cipher 3des:指定单一密码算法为3DES。
  • Ciphers aes128-ctr, ...:指定允许的加密算法列表。
  • MACs hmac-md5, ...:指定允许使用的消息认证码算法。

其他设置

  • ConnectTimeout 0:连接超时设为0,表示没有超时限制。
  • Tunnel no:不启用隧道。
  • VisualHostKey no:不显示视觉化的主机密钥。
  • ProxyCommand ssh -q -W %h:%p gateway.example.com:设置代理命令,用于通过另一台SSH服务器(如网关)来连接目标服务器

 

 

scp
拷贝到远端:
scp  指定拷贝文件的路径   远端IP:指定存放位置

 从远端拷贝:

sftp:安全ftp上载 

连接主机:

get下载put上传

quit退出 


http://www.ppmy.cn/devtools/31723.html

相关文章

【数据库原理及应用】期末复习汇总高校期末真题试卷

试卷 一、填空题 1.________是位于用户与操作系统之间的一层数据管理软件。 2.数据库系统的三级模式结构是指________、________、________。 3.数据库系统的三种数据模型是________ 、________、________。 4.若关系中的某一属性组的值能唯一地标识一个元组&#xff0c;则…

大模型引领NLP研究新范式:从统计机器学习到预训练语言模型

自然语言处理&#xff08;NLP&#xff09;研究范式经历了从浅层到深层、从局部到整体、从特定到通用的演进过程。下面我们来详细回顾这一过程。 一、早期的统计机器学习方法&#xff08;20世纪90年代 - 21世纪初&#xff09; 词袋模型&#xff08;Bag-of-Words&#xff09; 将…

AI项目二十一:视频动态手势识别

若该文为原创文章&#xff0c;转载请注明原文出处。 一、简介 人工智能的发展日新月异&#xff0c;也深刻的影响到人机交互领域的发展。手势动作作为一种自然、快捷的交互方式&#xff0c;在智能驾驶、虚拟现实等领域有着广泛的应用。手势识别的任务是&#xff0c;当操作者做出…

递归实现组合型枚举

#include<bits/stdc.h> using namespace std; int n,m; vector<int> num; void dfs(int k) { //如题解所述 if(num.size() > m || num.size() (n - k 1) < m) return; //到达枚举边界&#xff0c;输出结果并结束 if(k n 1) …

Spring boot + dubbo 项目启动报错 ClassNotFoundException WebServerFactoryCustomizer

1 背景 代码和包依赖等信息没做任何修改&#xff0c;之前项目启动没问题的&#xff0c;有一天项目在测试环境突然启动报错 了&#xff0c;生产环境可以正常启动。报错信息如下所示。 Caused by: java.lang.ClassNotFoundException: org.springframework.boot.web.server.Web…

如何从Mac上的清空垃圾箱中恢复已删除的文件?

Mac用户几乎每天都会删除文件。当您将文档删除到 Mac 垃圾箱时&#xff0c;该文件将被剪切到 Mac 垃圾箱中&#xff0c;并且可以轻松放回原处。但是&#xff0c;在某些情况下&#xff0c;您错误地删除了文档和文件&#xff0c;并在您意识到自己犯了一个大错误之前清空了垃圾箱。…

node.js中的fs模块,读写语法讲解

本文分享node.js的入门知识&#xff0c;使用 fs 模块封装的方法读写文件内容 node中的fs 模块&#xff1a;封装了与本机文件系统进行交互的&#xff0c;方法和属性&#xff0c;使用语法如下&#xff1a; 1、加载 fs 模块&#xff0c;得到 fs 对象 const fs require(fs) 2、…

阿里云API网关 产品的使用笔记

阿里云的产品虽多&#xff0c;还是一如既往的一用一个看不懂&#xff0c;该模块的文档依旧保持“稳定”发挥&#xff0c;磕了半天才全部跑通。 用阿里云API网关的原因是&#xff0c;在Agent中写插件调用API的时候&#xff0c;需要使用Https协议&#xff0c;又嫌搞备案、证书等事…