我正在尝试制作一个简单的包来将 SSH 命令发送到服务器。
我有以下代码:
type Connection *ssh.Client
func Connect(addr, user, password string) (conn Connection, err error) {
sshConfig := &ssh.ClientConfig{
User: user,
Auth: []ssh.AuthMethod{
ssh.Password(password),
},
HostKeyCallback: ssh.HostKeyCallback(func(hostname string, remote net.Addr, key ssh.PublicKey) error { return nil }),
}
conn, err = ssh.Dial("tcp", addr, sshConfig)
return
}
func (conn Connection) SendCommand() ([]byte, error) {
session, err := (*ssh.Client)(conn).NewSession()
// ...
}
我的问题是在两条线上func (conn Connection) SendCommand() ([]byte, error)
and session, err := (*ssh.Client)(conn).NewSession()
.
我不知道如何使用可用的方法*ssh.Client
从我的覆盖Connection
type.
我知道我需要做一些转换,并使用ssh.Client(*conn).NewSession()
会起作用,但它复制了*ssh.Client
这似乎不是正确的方法。
应该做什么来访问可用的方法*ssh.Client
当与我的定制工作时type Connection *ssh.Client
type?