我正在努力和ssh client for golang但被告知freesshd服务器的密码与Go的ssh客户端不兼容,所以我只安装了另一个(PowerShell服务器),我可以成功连接到服务器
我的问题还没有结束,因为我现在需要将文件从本地传输到远程,这只能通过scp完成。我被引导到这个scp client for go并且有两个问题。
我运行它得到这个:
我在哪里或如何访问privateKey所需的id_rsa内容?我刚进入我的.ssh文件夹并看到了一个github_rsa并使用了该私钥,我确定这不是正确使用的,但我不会看到某种错误或无效的私钥而不是上面的结果
答案 0 :(得分:3)
您被引导的代码被破坏了。该示例还使用公钥身份验证,这不一定是您唯一的选择。如果您可以允许密码验证,那么您可以让自己更容易。
我只是通过修改您使用的示例来自行上传:
package main
import (
"code.google.com/p/go.crypto/ssh"
"fmt"
)
type password string
func (p password) Password(_ string) (string, error) {
return string(p), nil
}
func main() {
// Dial code is taken from the ssh package example
config := &ssh.ClientConfig{
User: "username",
Auth: []ssh.ClientAuth{
ssh.ClientAuthPassword(password("password")),
},
}
client, err := ssh.Dial("tcp", "127.0.0.1:22", config)
if err != nil {
panic("Failed to dial: " + err.Error())
}
session, err := client.NewSession()
if err != nil {
panic("Failed to create session: " + err.Error())
}
defer session.Close()
go func() {
w, _ := session.StdinPipe()
defer w.Close()
content := "123456789\n"
fmt.Fprintln(w, "C0644", len(content), "testfile")
fmt.Fprint(w, content)
fmt.Fprint(w, "\x00")
}()
if err := session.Run("/usr/bin/scp -qrt ./"); err != nil {
panic("Failed to run: " + err.Error())
}
}