V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Chenamy2017
V2EX  ›  Linux

基于现有的 ssh 库,自己实现一个简单的 ssh 应用。

  •  
  •   Chenamy2017 · 2020-10-20 16:22:28 +08:00 · 2800 次点击
    这是一个创建于 1501 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前希望使用 C 语言开发一个简单的 ssh 应用(可以登录到主机,发送指令,读到指令的输出)。

    用法:sshtest IP PORT USERNAME PASSWORD COMMAND

    输出:登录到主机并且执行 COMMAND 后的输出。

    目前看到有以下库

    libssh:可以实现服务端 /客户端,支持 V1/V2 协议

    libssh2:仅实现客户端。

    问题:

    1. 已经用 libssh2 实现了,但是在某些主机上(一台华三的交换机)上无法获取到输出,执行过程中无报错,但 libssh2_channel_read()一直返回的是 0 (但前面已经设置为阻塞模式了,按说不应该返回 0 ),有大佬知道吗?

    2. 搜索目前好像用 libssh2 的多一些,为什么?或者那个好?

    10 条回复    2020-10-21 17:15:38 +08:00
    zunceng
        1
    zunceng  
       2020-10-20 16:27:54 +08:00   ❤️ 1
    楼主的问题我也不知道
    用 golang 挺简单的 我前前后后写过好几个 ssh tunnel proxy 类型的
    Chenamy2017
        2
    Chenamy2017  
    OP
       2020-10-20 16:37:07 +08:00
    @zunceng 感谢,或许我需要变一下思路,考虑下其他语言的。
    ETiV
        3
    ETiV  
       2020-10-20 16:41:22 +08:00 via iPhone   ❤️ 1
    为啥要自己开发,ssh 就可以这么用啊……

    ssh user@hostname COMMAND
    matrix67
        4
    matrix67  
       2020-10-20 16:46:36 +08:00   ❤️ 1
    @ETiV #3 是啊。 而且一般需求都是批量,这也有 pssh
    wslzy007
        5
    wslzy007  
       2020-10-20 16:49:45 +08:00   ❤️ 1
    唉,c 开发,为啥要用 ssh 库呢?直接 openssl 它不香吗
    huangmingyou
        6
    huangmingyou  
       2020-10-20 17:15:08 +08:00   ❤️ 1
    ssh 还可以签名证书,限制执行的命令。
    xcstream
        7
    xcstream  
       2020-10-20 21:43:16 +08:00   ❤️ 1
    ssh 命令就可以这功能
    Chenamy2017
        8
    Chenamy2017  
    OP
       2020-10-21 10:35:09 +08:00
    ssh 是个好办法,但有一些缺陷:
    1.要是根据反馈再执行相应的命令,那么每次执行要有一个验证过程,影响效率。
    2.对于一些设备,命令执行结果很多需要输入回车才会继续显示。

    我再研究一下,避免自己开发,使用 ssh 。谢谢大家!
    ETiV
        9
    ETiV  
       2020-10-21 11:22:47 +08:00 via iPhone
    不知道你要干啥

    自动化?
    ansible -m shell 了解一下?
    它还有各种其它模块
    Chenamy2017
        10
    Chenamy2017  
    OP
       2020-10-21 17:15:38 +08:00
    @ETiV 是的,自动化。自动登录设备,自动执行一些命令。
    ansible 这个看着好强大,目前我用 expect 测试,可以实现交互。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2639 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:47 · PVG 09:47 · LAX 17:47 · JFK 20:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.