golang ssh包使用方法介紹
在使用gexpect包發現很多問題之外,這裡又嘗試使用ssh user@127.0.0.1的思路進行使用者切換。這裡記錄下具體的使用方法,遇到的ssh: must specify HostKeyCallback 問題的解法方法及最終使用過程中的問題。
一、ssh包crypto的安裝
ssh使用的包為"golang.org/x/crypto/ssh",由於golang.org被牆了,所以這裡使用github上的映象版本,所以這裡不能使用go get進行安裝(不要使用go get,不要使用go get,不要使用go get)。使用方法為git clone 後,放到$GOPATH/src/golang.org/x/目錄下面即可。
二、ssh登入程式碼
package main import ( "golang.org/x/crypto/ssh" "log" "os" ) func main() { ce := func(err error, msg string) { if err != nil { log.Fatalf("%s error: %v", msg, err) } } client, err := ssh.Dial("tcp", "127.0.0.1:22", &ssh.ClientConfig{ User: "zabbix", Auth: []ssh.AuthMethod{ssh.Password("123456")}, HostKeyCallback: ssh.InsecureIgnoreHostKey(), }) ce(err, "dial") session, err := client.NewSession() ce(err, "new session") defer session.Close() session.Stdout = os.Stdout session.Stderr = os.Stderr session.Stdin = os.Stdin modes := ssh.TerminalModes{ ssh.ECHO: 0, ssh.TTY_OP_ISPEED: 14400, ssh.TTY_OP_OSPEED: 14400, } err = session.RequestPty("linux", 32, 160, modes) ce(err, "request pty") err = session.Shell() ce(err, "start shell") err = session.Wait() ce(err, "return") }
程式碼執行後,發現可以正常切換到對應的使用者,而且命令重複輸出的問題也解決了, 但是tab不能補全命令,ps auxf檢視不能全屏的問題依然存在 。
三、ssh: must specify HostKeyCallback報錯解決
在執行上面的程式碼時可能會遇到ssh: must specify HostKeyCallback報錯,出現該問題的原因是沒有加如下行:
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
除了增加上面的程式碼能解決外,也可以增加如下程式碼解決:
//需要驗證服務端,不做驗證返回nil就可以,點選HostKeyCallback看原始碼就知道了 HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error { return nil },
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2285430/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- golang toolkits包的使用方法介紹Golang
- Golang Tools 介紹Golang
- 包介紹
- Lombok介紹及使用方法Lombok
- Golang : pflag 包簡介Golang
- Golang : cobra 包簡介Golang
- pytorch 包介紹PyTorch
- vuex詳細介紹和使用方法Vue
- domutils 工具庫的使用方法介紹
- 介紹 golang net/http 原始碼GolangHTTP原始碼
- Hanlp在ubuntu中的使用方法介紹HanLPUbuntu
- DriverStudio工具包介紹
- [譯] part 20: golang 併發介紹Golang
- golang 介紹以及踩坑之四Golang
- golang實現常用集合原理介紹Golang
- golang-切片slice的基本介紹Golang
- Deadmin 更新部分文件介紹快速使用方法
- go 字串之 strings 包介紹Go字串
- 簡單介紹JavaScript閉包JavaScript
- RPM包安裝與介紹
- Golang指標基本介紹及使用案例Golang指標
- SOLIDWORKS批次改名外掛功能介紹以及使用方法Solid
- 簡單介紹SQL中ISNULL函式使用方法SQLNull函式
- SAP Cloud SDK for JavaScript 的搭建和使用方法介紹CloudJavaScript
- SAP UI5 navpopover Factory 的使用方法介紹UI
- jar包、war包和ear包的介紹與區別JAR
- jar包和war包的介紹與區別JAR
- golang資料型別基本介紹與使用Golang資料型別
- xshell-ssh自動多級跳轉功能介紹
- tcpdump抓包及tshark解包方法介紹TCP
- 『簡書API:jianshu 基於golang -- 用法介紹 (2)』APIGolang
- 簡單介紹如何使用Bazel構建Golang程式Golang
- 隨身碟恢復工具的使用方法與技巧介紹
- 四,Java運算子詳細分類及使用方法介紹Java
- 簡單介紹.Net效能測試框架Crank的使用方法框架
- Jacob包使用方法
- SSH Config教程之基礎知識介紹-必備技巧
- Python的包(package)和模組(module)介紹PythonPackage