1. 程式人生 > >Autossh-go寫的一個ssh遠端客戶端

Autossh-go寫的一個ssh遠端客戶端

Autossh

用golang寫的一個ssh遠端客戶端。可一鍵登入遠端伺服器,主要用來彌補Mac Terminal ssh無法儲存密碼的不足。

使用Mac開發已有幾個月,一直沒有找到比較好用的ssh客戶端。SecureCRT有Mac版,始終覺得沒有自帶的Terminal好用。而Terminal只是一個終端,
對於經常要通過ssh遠端操作的人來說,功能還是太弱了。

其間,我也試過自己寫一些shell來輔助,如:alias sshlocal="ssh [email protected]",但是它無法記住密碼自動登入。
再如,使用sshpass實現記住密碼,但用著還是各種彆扭。原因:
- 這些功能都是編寫shell實現的,本人對shell程式設計並不擅長
- shell指令碼逼格不夠高

最後,下定決心用golang寫一個ssh client。為什麼不用C或者Java?因為golang是世界上最好的編譯語言,PHP是世界上最好的指令碼語言。

配置

下載編譯好的二進位制包autossh,在autossh同級目錄下新建一個servers.json檔案。
編輯servers.json,內容可參考server.example.json

[
  {
    "name": "vagrant", // 顯示名稱
    "ip": "192.168.33.10", // 伺服器IP或域名
    "port": 22, // 埠
    "user": "root", // 使用者名稱
    "password
": "vagrant", // 密碼 "method": "password" // 認證方式,目前支援password和pem }, { "name": "ssh-pem", "ip": "192.168.33.11", "port": 22, "user": "root", "password": "your pem file password or empty", // pem金鑰密碼,若無密碼則留空 "method": "pem", // pem金鑰認證 "key": "your pem file path" // pem金鑰檔案絕對路徑
} // ...可配置多個 ]

儲存servers.json,執行autossh,即可看到相應伺服器資訊,輸入對應序號,即可自動登入到伺服器
登入演示

高階用法

設定alias,可在任意目錄下呼叫

[[email protected] ~]# vim /etc/profile
在行尾追加 alias autossh="/usr/bin/autossh"
[[email protected] ~]# . /etc/profile

編譯

go build main.go

依賴包

  • golang.org/x/crypto/ssh

相關推薦

Autossh-go一個ssh遠端客戶

Autossh 用golang寫的一個ssh遠端客戶端。可一鍵登入遠端伺服器,主要用來彌補Mac Terminal ssh無法儲存密碼的不足。 使用Mac開發已有幾個月,一直沒有找到比較好用的ssh客戶端。SecureCRT有Mac版,始終覺得沒有自帶的

釋出一個基於Go語言的 SSH 遠端終端 WebConsole

基於Golang、WebSocket、TermJS的SSH遠端終端,希望能幫到大家。 主要應用到隔離網路內,SSH遠端終端的訪問問題。 歡迎大家踴躍報名,利用業餘時間來拓展此專案,增加更多的功能服務大家。 更新日誌 2016.03.05     新增:      

新人的每日新聞客戶

creat baidu lis ongl http music hao123 eat 新聞 %E5%A4%8D%E5%86%99ONCREaTE%E6%96%B9%E6%B3%95%E6%97%B6%E5%87%BA%E9%94%99 http://music.hao123

python---》客戶與服務的基礎(做一個簡單的客戶與服務

python 今天我們分享的內容是python簡單的客戶端與服務端,此處僅介紹一些簡單的函數,並作出來一個玩兒玩兒。 在開始之前呢,先用一張圖表示他們之間的關系 我們來按照這個步伐依次介紹:服務端:import socketserver=socket.socket()#此處是為了創建

如何一個SSH項目(一)程序設計大體思路

設計 工程 png 人員 上帝 hiberna 技術 導包 bsp SSH:分別是指Spring,Struts,Hibernate. 後來Struts2代替了Struts,所以我們常說的SSH是指Spring,Struts2,Hibenate. 其中Spring一般用來配置

如何一個SSH項目(二)hibernate.xml配置

手工 多個 元素 數據庫 動態修改 type 轉載 asc span 我只是知識的搬運工。 (轉載) <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hi

WebService手簡單案例:客戶與服務的資料互動

本篇部落格是模擬服務端釋出服務,客戶端模擬接收服務端的返回資料的一個簡單案例(客戶端輸入姓名,服務端根據客戶端輸入的姓名模糊查詢身份證的案例) 服務端釋出服務 1.專案準備工作:新建一個web專案,匯入mysql的jar包放入工程,寫好jdbc連線,寫好實體類,寫dao,不同的

mysql8遠端客戶連線方式

mysql 8.0 預設使用 caching_sha2_password 身份驗證機制 —— 從原來的 mysql_native_password 更改為 caching_sha2_password。 從 5.7 升級 8.0 版本的不會改變現有使用者的身份驗證方法,但新使用者會預設使用新的 cac

go伺服器與mfc做客戶的簡單群聊Demo

//先前程式碼對中文處理有問題,以下程式碼做了修正, //go語言伺服器程式碼 package main import( "fmt" "net" "strconv" "runtime" //go執行緒庫 "strings" ) var conns map[string]ne

Flutter 仿的掘金客戶

使用 Flutter 仿寫的掘金客戶端,自定義了9宮格圖片佈局,頂部 tabbar 佈局,底部 bottomNavigationView APK Download 截圖 總結 Flutter 相比於 RN Weex 寫 UI 優勢比較大,不存在平臺不相容

Go語言11-日誌系統客戶相關元件

tailf 元件 檢視log日誌,會經常使用到tail -f命令實時跟蹤檔案變化。也可以用Go語言的程式碼來實現同樣的功能,這樣就可以直接用到專案中去了。這裡不用重複造輪子,有一個第三方的庫已經實現了這個功能: import "github.com/hpcloud/tail" HP團隊出的tail庫,常

Go語言11-日誌系統客戶相關組件

日誌庫 cond gis odin ger 參數 ngs 例子 行數 tailf 組件 查看log日誌,會經常使用到tail -f命令實時跟蹤文件變化。也可以用Go語言的代碼來實現同樣的功能,這樣就可以直接用到項目中去了。這裏不用重復造輪子,有一個第三方的庫已經實現了這個功

Go一個簡單的Selpg命令列程式

設計說明 【程式簡介】 Selpg從標準輸入或從作為命令列引數給出的檔名讀取文字輸入。它允許使用者指定來自該輸入並隨後將被輸出的頁面範圍,然後輸出到標準輸出或是檔案中。 【程式設計】 程式的功能分為以下幾個部分: 讀取一條命令列輸入的指令 解析命令,分析其中

Python3 Django 如何獲取真實遠端客戶IP

解決方法參考 1.自定義中介軟體 生成http.py放到工程目錄: from django.utils.deprecation import MiddlewareMixin class SetRemoteAddrFromForwardedFor(MiddlewareM

誇伺服器遠端客戶訪問hbase叢集需要開通的防火牆

問題:hbase客戶端訪問hbase叢集需要怎麼申請開通防火牆? 場景:誇伺服器遠端客戶端訪問hbase叢集需要開通的防火牆和注意事項? 答案: 1)hbase叢集的所有zookeeper伺服器和埠,一般埠預設為2181 2)hbase叢集的所有hmaster伺服器和埠。

用libevent開發一個http服務,附帶一個curl http客戶

對http互動較為陌生,所以最近寫了兩個小demo,一個http server 和一個http client,對於http server,很多人推薦使用libevent。http server:#include <stdlib.h> #include <st

boost asio非同步讀網路聊天程式客戶 例項詳解

// // chat_server.cpp // ~~~~~~~~~~~~~~~ // // Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boos

Netty實戰(1)使用Netty搭建一個簡單的客戶與伺服器的互動Demo

       Netty 是一個基於 JAVA NIO 類庫的非同步通訊框架,它的架構特點是:非同步非阻塞、基於事件驅動、高效能、高可靠性和高可定製性。換句話說,Netty是一個NIO框架,使用它可以簡單快速地開發網路應用程式,比如客戶端和服務端的協議。Netty大大簡化了網

WebService_03使用CXF方式搭建一個簡單的客戶測試服務

1 需要一個官方提供的CXF工具 2 配置環境變數 3 執行dos命令 wsdl2java -p 包路經 -client 服務端的地址 必須精確到wsdl wsdl2java -p com.mr.service -client http://127.0.0.1/