基于openwrt和libssh2实现ssh的远程登录

libssh2的支持

openwrt本身带有libssh和libssh2两种三方库。我们需要修改编译使其参与编译
./scripts/feeds update -a
./scripts/feeds install -a

执行make menuconfig操作,勾选你想要的三方库
在这里插入图片描述

ssh服务器的连接

这里需要注意的主要就是makefile里面记得添加ssh2的依赖,要不编译或者运行会出问题,
其他想做的操作,替换新建文件的逻辑就可以

#include "rk_stick.h"int main(int argc, char **argv)
{LIBSSH2_SESSION *session = NULL;const char *hostname = "192.168.180.8";const char *username = "toybrick";const char *password = "toybrick";int rc = -1, sock;// 初始化libssh2库rc = libssh2_init(0);if (rc != 0) {fprintf(stderr, "Failed to initialize libssh2\n");return -1;}// 创建套接字sock = socket(AF_INET, SOCK_STREAM, 0);if (sock == -1) {fprintf(stderr, "Failed to create socket\n");return -1;}// 连接到远程主机struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(22);sin.sin_addr.s_addr = inet_addr(hostname);if (connect(sock, (struct sockaddr*)(&sin), sizeof(struct sockaddr_in)) != 0) {fprintf(stderr, "Failed to connect to remote host\n");close(sock);return -1;}// 创建SSH会话session = libssh2_session_init();if (!session) {fprintf(stderr, "Failed to create SSH session\n");return -1;}// 连接到SSH服务器rc = libssh2_session_startup(session, sock);if (rc) {fprintf(stderr, "Failed to establish SSH session\n");libssh2_session_free(session);return -1;}// 认证rc = libssh2_userauth_password(session, username, password);if (rc) {fprintf(stderr, "Authentication failed\n");libssh2_session_free(session);return -1;}// 执行远程命令LIBSSH2_CHANNEL *channel = libssh2_channel_open_session(session);if (channel) {libssh2_channel_exec(channel, "touch /tmp/test.config");libssh2_channel_close(channel);libssh2_channel_free(channel);}// 关闭会话libssh2_session_disconnect(session, "Bye bye, thanks for playing");libssh2_session_free(session);// 关闭libssh2库libssh2_exit();return 0;
}

结果验证

在服务器的tmp目录下查看是否有test.config文件
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1410840.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

刷代码随想录有感(52):用数组最大值及其两侧构造最大二叉树

题干&#xff1a; 代码&#xff1a; class Solution { public:TreeNode* constructMaximumBinaryTree(vector<int>& nums) {if(nums.size() 1)return new TreeNode(nums[0]);int maxvalue INT_MIN;int maxindex;for(int i 0; i < nums.size(); i){if(nums[i] …

[C++][数据结构]红黑树的介绍和模拟实现

前言 之前我们简单学习了一下搜索树和平衡搜索树&#xff0c;今天我们来学习一下红黑树 简介 概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着…

地图产业的困局与破局:高精地图“上车”难 轻量化渐成主流方案 | 最新快讯

《科创板日报》5月3日讯&#xff08;编辑 邱思雨&#xff09; 近期&#xff0c;特斯拉与百度的“绯闻”成为智驾、地图行业的焦点。 有媒体消息称&#xff0c;特斯拉将与百度地图独家深度定制车道级高辅地图。《科创板日报》记者也获悉&#xff0c;自5月1日起&#xff0c;百度…

pygame鼠标绘制

pygame鼠标绘制 Pygame鼠标绘制效果代码 Pygame Pygame是一个开源的Python库&#xff0c;专为电子游戏开发而设计。它建立在SDL&#xff08;Simple DirectMedia Layer&#xff09;的基础上&#xff0c;允许开发者使用Python这种高级语言来实时开发电子游戏&#xff0c;而无需被…

ESXi8 中FreeBSD启动失败记录

一天突然发现ESXi8 中的FreeBSD启动失败&#xff0c;且自动挂载了FreeBSD的安装光盘&#xff0c;进入安装步骤。 惊了一身冷汗。 到虚拟主机设置里&#xff0c;发现引导选项里面&#xff0c;选择应当用来引导虚拟机的固件为EFI&#xff0c;原来是前段时间手残修改了&#xff0…

图片倾斜矫正处理(Hough Transform)

目录 倾斜矫正原理及实现方式Canny边缘检测非极大值抑制霍夫变换 倾斜矫正原理及实现方式 代码连接&#xff1a;https://github.com/shuyeah2356/Image-Angel-correction/tree/main 倾斜矫正的实现原理&#xff1a; 使用霍夫变换检测图片中的直线&#xff1b; 计算直线与水平方…

TCP四次挥手分析

TCP四次挥手分析 概念过程分析为什么连接的时候是三次握手&#xff0c;关闭的时候却是四次握手&#xff1f;为什么要等待2MSL&#xff1f; 概念 四次挥手即终止TCP连接&#xff0c;就是指断开一个TCP连接时&#xff0c;需要客户端和服务端总共发送4个包以确认连接的断开。 在…

机器视觉系统-条形光源安装位置计算

使用条形光对反光材质物体打光时&#xff0c;常常出现强烈的光斑反射&#xff0c;影响图像处理。如果不想图像中出现光源的光斑&#xff0c;可以通过计 算得出条形光源的安装范围。 检则PCB板上的二维码字符&#xff0c;使用两个条形光打光的效果图 以及等效模型&#xff1a; …

机器学习:深入解析SVM的核心概念【二、对偶问题】

对偶问题 **问题一&#xff1a;什么叫做凸二次优化问题&#xff1f;而且为什么符合凸二次优化问题&#xff1f;**为什么约束条件也是凸的半空间&#xff08;Half-Space&#xff09;凸集&#xff08;Convex Set&#xff09;半空间是凸集的例子SVM 约束定义的半空间总结 **问题二…

领域驱动设计(DDD)笔记(三)后端工程架构

文章链接 领域驱动设计(DDD)笔记(一)基本概念-CSDN博客领域驱动设计(DDD)笔记(二)代码组织原则-CSDN博客领域驱动设计(DDD)笔记(三)后端工程架构-CSDN博客前导 领域驱动设计(Domain Driven Design,简称DDD)是业内主导的业务工程理论。它在各中权威人士被广泛讨论…

ArrayList应用

1.简单的洗牌算法 基本要求&#xff1a; 人数为3个人没人轮流抽一张牌&#xff0c;抽五轮&#xff0c;也就是每人五张牌去除大小王&#xff0c;一共52张牌&#xff0c;要求牌打乱顺序 思路&#xff1a; 创建Card对象&#xff0c;有花色和牌面值两个成员属性生成一副扑克牌&…

ICode国际青少年编程竞赛- Python-1级训练场-for循环练习

ICode国际青少年编程竞赛- Python-1级训练场-for循环练习 1、 for i in range(3):Dev.step(4)Dev.turnLeft()2、 for i in range(3):Dev.step(2)Dev.turnRight()Dev.step(2)Dev.turnLeft()3、 for i in range(3):Dev.step(2)Dev.turnRight()Dev.step(2)Dev.turnLeft()4、 for…

痉挛性斜颈患者早上运动还是下午运动更合适?选对了让治疗更简单!【北京仁爱堂】

对于痉挛性斜颈患者来说&#xff0c;选择合适的运动时间对于治疗的效果和舒适度至关重要。那么&#xff0c;痉挛性斜颈患者早上运动还是下午运动更合适呢&#xff1f;本文将从多个角度对此进行分析&#xff0c;帮助患者找到最适合自己的运动时间。 首先&#xff0c;我们需要了…

网络安全的重要性及人才需求

安全现在是大趋势&#xff0c;说是铁饭碗也不为过&#xff0c;就业前景好&#xff0c;方向多比传统计算机行业就业舒服点。但是大厂依然是985&#xff0c;211的天下&#xff0c;是双非能进大厂的&#xff0c;只是凤毛麟角。前提是你的能力可以让公司忽略你的学历。 以2023年为…

HTML_CSS学习:常用文本属性

一、文本颜色 相关代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>文本颜色</title><style>div{font-size: 90px;}.atguigu1{color: #238c20;}.atguigu2{color: rgb(2…

文心一言 VS 讯飞星火 VS chatgpt (250)-- 算法导论18.2 3题

三、请说明如何在一棵 B 树中找出最小关键字&#xff0c;以及如何找出某一给定关键字的前驱。如果要写代码&#xff0c;请用go语言。 文心一言&#xff1a; 在B树&#xff08;也称为B-tree&#xff09;中&#xff0c;最小的关键字总是位于最左边的叶子节点的最左边的元素。要…

中国科学院南京地理与湖泊研究所张科研究员团队联合多家单位科学家在PNAS发文:湖泊沉积物解锁长三角太湖流域可持续发展之道

文章简介 论文名称&#xff1a;Transient social–ecological dynamics reveal signals of decoupling in a highly disturbed Anthro-pocene landscape&#xff08;瞬态社会生态动力学揭示了高度干扰的人类景观中解耦的信号&#xff09; 第一作者及通讯作者&#xff1a;林琪…

波形发生器设计(频率、占空比、幅值可调)

一、正弦波信号发生器 1.电路原理图&#xff1a; 2.原理&#xff1a; 采用了文氏电桥的方法&#xff0c;通过自激振荡的方式出波。 其中R6,C1,R2,C2构成正反馈支路&#xff0c;令R1R2R,C1C2C&#xff0c;可以计算出正弦波的振荡频率f1/2πRC。将文氏电路的电容值固定&#xff0…

《21天学通C++》(第十五章)标准模板库简介

本章简单介绍STL容器、迭代器和算法的基本概念&#xff0c;之后几章会分别详述 1.STL容器 STL容器是STL中用于存储集合数据的组件&#xff0c;它们可以被看作是模板类&#xff0c;允许开发者定义特定类型的容器发&#xff0c;这里按照C11标准分为四类&#xff1a;顺序容器、关…

信息系统项目管理师0082:项目基础(6项目管理概论—6.2项目基本要素—6.2.1项目基础)

点击查看专栏目录 文章目录 6.2项目基本要素6.2.1项目基础1.独特的产品、服务或成果2.临时性工作3.项目驱动变更4.项目创造业务价值5.项目启动背景记忆要点总结6.2项目基本要素 6.2.1项目基础 项目是为创造独特的产品、服务或成果