gpt4 book ai didi

ssh - Go 中的 SCP 客户端

转载 作者:IT王子 更新时间:2023-10-29 02:34:44 26 4
gpt4 key购买 nike

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

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

  1. 我运行它并得到这个: enter image description here

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

最佳答案

您被定向到的代码已损坏。该示例还使用公钥身份验证,这不一定是您唯一的选择。如果您可以改为允许密码身份验证,您可以让自己更轻松一些。

我刚刚通过修改您使用的示例自己上传了:

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

}

关于ssh - Go 中的 SCP 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19021964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com