發布一個基於Go語言的 SSH 遠程終端 WebConsole

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

基於Golang、WebSocket、TermJS的SSH遠程終端,希望能幫到大家。

主要應用到隔離網路內,SSH遠程終端的訪問問題。

Git@OSC: http://git.oschina.net/shibingli/webconsole
Github:     https://github.com/shibingli/webconsole

(其實這是一個Go語言的練手項目)

更新日誌



2016.03.04 發布 v1.1


    新增:
        1、增加命令列的啟動、停止、狀態查看功能. 如: ./apibox start/stop/status


2016.03.03


    修證:
        1、修改獨立模式時登陸JS驗證問題.


    新增:
        1、增加後台運行模式(conf/conf.json.  daemon:true/false);
        2、增加程式運行時的PID檔案(log/apibox.pid);


大概的資料流向:


    瀏覽器--》WebSocket--》SSH--》Linux OS


Git@OSC: http://git.oschina.net/shibingli/webconsole
Github:       https://github.com/shibingli/webconsole

    




程式包結構:
├── bin
│   └── apibox
├── conf
│   ├── ssl_cert.crt (預設不存在)
│   ├── ssl_cert.key (預設不存在)
│   ├── conf.json
│   └── mime.types
├── log
├── pkg
├── static
│   ├── images
│   └── scripts
└── template


運行環境要求:


1、Intel 架構
2、Linux Kernel 3.x/x86_64 及更高版本
3、建議 Linux 發行版 CentOS 7.x
4、啟用支援 SSL/TLS 模式訪問時,需要產生對應的 SSL 憑證檔案且放置到 "conf" 檔案夾下並配置 "conf.json" 檔案
5、用戶端要求使用 IE9、Chrome 40、Firefox 38、Safari 9 或更高版本的瀏覽器訪問
6、伺服器端需要對防火牆開啟對應的外部存取連接埠。具體需要開放的連接埠請參考 "conf" 檔案夾下的 "conf.json" 檔案中的連接埠部分的配置
7、本程式只能對 Linux 類的作業系統且支援 SSH 協議的 OS 進行遠程操作
8、基於Go1.6,原生支援 http2 




一、部署
1、將程式解壓至任一目錄,運行 "bin" 檔案夾下的 "apibox" 檔案即可。如:"./apibox start/stop"
2、設定檔在 "conf" 檔案夾下,核心設定檔為 "conf.json"
3、後台運行可以配置 "conf" 檔案夾下的 "conf.json" 檔案,將 "daemon" 項配置為 "true" 
4、運行時記錄檔存放在 "log" 檔案夾下,以當天時期命名
5、也可以配置程式以 Nginx 的 fcgi 模式運行,以 Nginx 做為訪問入口




二、使用
1、程式部署完成後,直接通過瀏覽器訪問即可。如: http(s)://ip:port。


2、外部系統引用步驟:
    
    1)、以 GET 或 POST 的方式,提交 "vm_addr" 參數至 "http(s)://ip:port/console/chksshdaddr" ,成功後可擷取到加密後的 "en_addr" 資訊。註:vm_addr 格式為: "ip:port" ,若不攜帶連接埠,預設連接埠為 "22" 。


        擷取到的結果為 JSON 格式(注:以下資料為測試資料):


            成功:
                {
                    "ok": true,
                    "msg": "",
                    "data": { "en_addr": "0b-nDgcazQKTmUw4oBLfxott", "sshd_addr": "192.168.220.173:22" }
                }


            失敗:
                { "ok": false, "msg": "Unable to resolve host address.", "data": null }


    2)、成功擷取到加密的 en_addr 資訊後,以 GET 或 POST 方式訪問  "http(s)://ip:port/console/login/'en_addr'" 即可。注: "en_addr" 是通過第 1)步操作擷取的資料。


        JQuery Demo:


            $.post("/console/chksshdaddr?rnd=" + Math.random(), {
                "vm_addr": "192.168.220.177:22"
            }, function(data) {
                var json = data;
                if (typeof(data) != "object") {
                    json = $.parseJSON(data);
                }
                if (json.ok) {
                    alert(json.data.en_addr);
                }
            });
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.