gossh 是 Go 语言实现 SSH 通讯的开发包。
示例代码:
package main import ( "github.com/dynport/gossh" "log" ) // returns a function of type gossh.Writer func(...interface{}) // MakeLogger just adds a prefix (DEBUG, INFO, ERROR) func MakeLogger(prefix string) gossh.Writer { return func(args ...interface{}) { log.Println((append([]interface{}{prefix}, args...))...) } } func main() { client := gossh.New("some.host", "user") // my default agent authentication is used. use // client.SetPassword("<secret>") // for password authentication client.DebugWriter = MakeLogger("DEBUG") client.InfoWriter = MakeLogger("INFO ") client.ErrorWriter = MakeLogger("ERROR") defer client.Close() rsp, e := client.Execute("uptime") if e != nil { client.ErrorWriter(e.Error()) } client.InfoWriter(rsp.String()) rsp, e = client.Execute("echo -n $(cat /proc/loadavg); cat /does/not/exists") if e != nil { client.ErrorWriter(e.Error()) client.ErrorWriter("STDOUT: " + rsp.Stdout()) client.ErrorWriter("STDERR: " + rsp.Stderr()) } }
运行结果:
2013/08/25 00:31:40 DEBUG connecting some.host 2013/08/25 00:31:41 INFO [EXEC ] uptime 2013/08/25 00:31:41 DEBUG 22:31:41 up 375 days, 10:44, 0 users, load average: 0.09, 0.13, 0.22 2013/08/25 00:31:41 INFO => 0.944143 2013/08/25 00:31:41 INFO map[stdout:72 bytes stderr:0 bytes runtime:0.944202 status:0] 2013/08/25 00:31:41 DEBUG already connected 2013/08/25 00:31:41 INFO [EXEC ] echo -n $(cat /proc/loadavg); cat /does/not/exists 2013/08/25 00:31:41 DEBUG 0.09 0.13 0.22 1/455 23396 2013/08/25 00:31:41 ERROR cat: /does/not/exists 2013/08/25 00:31:41 ERROR : No such file or directory 2013/08/25 00:31:41 INFO => 0.067075 2013/08/25 00:31:41 ERROR Process exited with: 1. Reason was: () 2013/08/25 00:31:41 ERROR STDOUT: 0.09 0.13 0.22 1/455 23396 2013/08/25 00:31:41 ERROR STDERR: cat: /does/not/exists: No such file or directory
开发或运维过程中频繁使用ssh,Mac也有一些ssh客户端,而我觉得还是终端下ssh比较好用,但无法保存密码,为了弥补它的不足 于是。。。 有了Gossh 什么是Gossh? Gossh是使用Go编写的远程登录客户端,可以一键登录远程服务器,它解决了终端下ssh无法保存密码的问题。使用Go语言编写的原因是它可以跨平台,并且用户无需安装运行环境,只需要一个终端它就能运行,Linux也可以使用。 下载
package main import ( "flag" "io" "log" "net" "os" "os/exec" "golang.org/x/crypto/ssh/terminal" "github.com/kr/pty" ) var ( addr = flag.String("addr", ":8080", "address") isserver = fl
不BB直接看代码 package main import ( "fmt" gossh "golang.org/x/crypto/ssh" "net" ) // 连接信息 type Cli struct { user string pwd string addr string client *gossh.Client session
我知道我可以使用非密码短语保护的密钥连接到远程,但我不是要求这样做,我想知道是否可以使用密码短语保护的密钥从VSCode连接到远程主机。
本文向大家介绍JSP 开发SSH整合异常解决办法,包括了JSP 开发SSH整合异常解决办法的使用技巧和注意事项,需要的朋友参考一下 SSH整合异常解决(creating bean with name 'sessionFactory' defined in class path) 整合SSH注解的方式,但是一直有异常。还是解决了,贴出来。 看到这个异常,首先我以为我没导hibernate的相关包,所
问题内容: 我有这两个容器,例如(CentOs)和。我想拥有的是,可以从容器中连接到mongo数据库,就像它在本地运行一样, 无论如何,据我所知,您可以像这样将端口localhost:27017映射到mongo:27017 但是,如果执行此操作,则必须提供root密码,然后它会将我登录到容器中,并且不会发生端口转发 背景:我想这样做是因为我正在运行一个Java程序,该程序连接到localhost上
本文向大家介绍Java的web开发中SSH框架的协作处理应用笔记,包括了Java的web开发中SSH框架的协作处理应用笔记的使用技巧和注意事项,需要的朋友参考一下 相信SSH没人不知道了吧,struts2+spring+hibernate,企业开发的“基础”架构,为什么基础标上引号,因为这个基础只是很多人自以为的而已,最基础的是servlet,很多培训机构很多基础都不教,直接上来就三大框架了,S
我希望能够远程连接到公开了JMX的Java服务,但它被防火墙阻止了。我尝试使用ssh本地端口转发,但是连接失败了。查看wireshark,当您试图与jconsole连接时,它似乎希望在连接到端口9999后通过一些短暂的端口进行连接,这些端口被防火墙阻止。 有没有什么方法可以让jconsole只通过9999连接或者使用代理?这篇文章还是最好的解决方案吗?或者,我是不是漏掉了什么?
我在mac上生成一个ssh密钥对,并将公钥添加到我的ubuntu服务器(实际上,它是mac上的一个虚拟机),但当我尝试登录ubuntu服务器时,它会说: 我已经尝试了很多方法来解决这个问题,改变密钥文件模式,改变文件夹模式,就像stackoverflow上的一些答案一样,但是它不起作用。 密钥文件权限: 请给我一些想法========================================
问题内容: Jenkins要求使用证书才能使用 ssh 发布和 ssh 命令。可以在下进行配置。 问题是:如何创建证书? 我有两台ubuntu服务器,一台运行Jenkins,一台用于运行应用程序。 我应该设置Jenkins证书并将其一部分放置在部署框中,还是将证书设置在部署框上并将其一部分放置在Jenkins上?证书是否需要使用名为Jenkins的用户名,或者可以用于任何用户?我们在开发箱上没有J
但是现在要通过Java的JSch库来完成,怎么做呢?第一次尝试了portforwarding,但在终端上我没有这样做(没有在中设置参数)。 然后我遇到了一个问题,如何使用JSCH SSH到另一个SSH服务器后面的服务器?,但我不明白如何创建tcp隧道!