当前位置: 首页 > news >正文

怀化医保网站电子商务网站推广

怀化医保网站,电子商务网站推广,wordpress 全局变量,北京养老网站开发背景 看到这个标题,你可能很奇怪,已经登录到Linux上了,为什么还要 ssh localhost,这个问题要从一个需求说起。 需求是这样的: 某一个springboot开发的带有界面的管理后台,有一个功能需求叫 “SSH控制台”…

背景

看到这个标题,你可能很奇怪,已经登录到Linux上了,为什么还要 ssh localhost,这个问题要从一个需求说起。

需求是这样的:
某一个springboot开发的带有界面的管理后台,有一个功能需求叫 “SSH控制台”,要求点击这个功能的时候,呈现一个黑色的和我们日常使用其他 shell 工具看到的界面一样的界面,并且要自动连接到这个 springboot 所在的 Linux 控制台,要点是自动进入,不需要输入任何host和账号密码。

效果如下截图:

在这里插入图片描述

浏览器前端这个效果,是通过 xterm.js 实现的。

  • 如果springboot运行在普通的Linux服务器上,那么这个控制台就是自动连接到这个服务器上,对应的用户就是启动 springboot 的 Linux 用户。

  • 如果这个springboot运行在docker容器里,那么这个控制台就是自动连接到这个docker容器的控制台上,对应的用户也是docker中默认启动这个服务的用户(docker一般默认不带ssh,你如果有这个需求,你需要在制作docker镜像的时候内置ssh服务)。

对于实现这个场景的功能,我画了一个草图(示意一下,大家将就看),如下:

在这里插入图片描述

对这个图解释一下:
1、浏览器和springboot服务建立websocket连接,用来实时传输数据。
2、springboot使用ssh localhost 的方式与所在Linux系统的ssh建立连接(使用JSch库)。
3、websocket 和 JSch 合作完成这个工作。

综上所述,我们就回到主题了。就是本文为什么要实现 ssh localhost 免密连接的原因了。

实现

如上,背景内容有点多,下面轮到实现了,总结了一下,实现本机 ssh 免密连接比较简单,就是生成本地密钥即可,细节不多说,看下面操作:

首先,springboot 在收到 websocket 建立连接的时候需要检测本机是否已经存在ssh免密登录的key

  • 先判断文件 ~/.ssh/id_dsa 是否存在
  • 然后判断文件 ~/.ssh/authorized_keys 是否存在
  • 再使用命令 whoami (查看当前用户) 和 文件 /etc/hostname 的内容(当前主机hostname)分别获取当前用户和当前主机hostname
  • 判断~/.ssh/authorized_keys中是否存在 用户@hostname 结尾的记录

然后,根据以上每个步骤的判断情况,对应执行如下命令(Java 执行 shell 命令不难吧?这个自己找个库解决)

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

或者

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

dsa 和 rsa 的方式为加密实现方式不同,均可以实现本文需求

最后,就可以执行命令 ssh localhost 验证结果了(对应在 springboot 中使用 JSch 免密连接 localhost 即可)。

因为登录可能会出现提示你输入yes/no 的确认提示,所以在使用 JSch 的时候,记得连接时设置属性 StrictHostKeyChecking 为 no
后者一劳永逸直接修改 ssh 配置文件 /etc/ssh/ssh_config 将其中的 # StrictHostKeyChecking ask 改成 StrictHostKeyChecking no

总结:本文的核心逻辑就是将生成的公钥放到 ssh 目标机器的 authorized_keys 文件中,因为我们是需要连接自己,所以就是将公钥放到自己系统的 authorized_keys 文件里,从而实现了 ssh localhost 的逻辑。


(END)

http://www.lbrq.cn/news/2713951.html

相关文章:

  • 做外汇都要看什么网站快照网站
  • 靖江有帮助做苏宁易购网站的公司吗今天最新的新闻头条
  • 12306网站如何做解绑推广app是什么工作
  • 餐馆餐饮装修设计网站搜索优化技巧
  • 招生代理平台网站seo优化案例
  • 郑州企业网站seo如何推广普通话
  • 网站邮件发送功能怎么做免费做网站网站
  • 车陂手机网站建设报价海外seo推广公司
  • 怎么加入网站做微商城网络推广哪个平台好
  • 网站开发实习报告广州seo网站推广
  • 做网站和彩票的同步开奖怎么做广告推广代运营公司
  • 青岛个人接网站建设百度网盘在线登录入口
  • axure开始怎么做网站首页培训班报名
  • 江苏cms建站系统搜索引擎优化的根本目的
  • 食品网络营销策划方案seo测试工具
  • 企业网站建设中期报告模板南宁seo服务公司
  • 北仑网站建设网络营销是干什么的
  • 乐山网站建设唐山百度提升优化
  • SharePoint做网站好吗杭州seo排名公司
  • 中国室内设计装饰协会公司网站如何seo
  • 江苏省建设委员会网站南京seo网络推广
  • 广州的网站建设公司百度公司总部
  • 手机网站建设价格是多少线下推广有哪几种渠道
  • wordpress中文字设置白杨seo教程
  • 杭州市做网站中国国家培训网
  • 怎样做网站快照青岛百度推广优化
  • wordpress注册取消邮箱验证码西安seo技术培训班
  • 乌克兰网站服务器神起网络游戏推广平台
  • 网站建设管理工作小结搜索引擎营销的优势
  • 网站后台密码忘了搜百度盘
  • python+vue扫盲
  • 使用EvalScope对GPT-OSS-20B进行推理性能压测实战
  • SQL注入学习笔记
  • ubuntu24下keychorn键盘连接不了的改建页面的问题修复
  • 完整多端口 Nginx Docker部署 + GitLab Runner注册及标签使用指南
  • 虚拟机一站式部署Claude Code 可视化UI界面