0

我在golang 的ssh 客户端上苦苦挣扎,但被告知 freesshd 服务器的密码与 Go 的 ssh 客户端不兼容,所以我只安装了另一个(PowerShell 服务器),我可以成功连接到服务器。

我的问题还没有结束,因为我现在需要将文件从本地传输到远程,而这只能通过 scp 来完成。我被定向到这个scp 客户端,并且有两个问题。

  1. 我运行它并得到这个: 在此处输入图像描述

  2. 我可以在哪里或如何访问 privateKey 所需的 id_rsa 的内容?我刚刚进入我的 .ssh 文件夹,看到了一个 github_rsa 并使用了那个私钥,我确定这不是正确的使用,但我不会看到某种错误或无效的私钥,而不是上面的结果?

4

1 回答 1

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())
    }

}
于 2013-09-26T08:04:05.417 回答