gpt4 book ai didi

ssh - 将 ssh 公钥复制到服务器

转载 作者:IT王子 更新时间:2023-10-29 02:27:50 31 4
gpt4 key购买 nike

我正在尝试使用 Go 在我的本地 $HOME/.ssh/目录下添加一个公钥。

我一直在使用相同的代码运行多个命令而没有问题,但不是针对这个特定的代码。

identity := fmt.Sprintf("cat %s/.ssh/%s.pub", fileUtil.FindUserHomeDir(), p.sshkey.name)
address := fmt.Sprintf("| ssh %s@%s 'cat >> ~/.ssh/authorized_keys', p.projectname.name, p.host.name)

cmd := exec.Command(identity, address)

err := cmd.Run()
if err != nil {
log.Fatal(err)
}

基本上我正在尝试运行:

cat /home/foo/.ssh/foobar.pub | ssh foo@bar.com 'cat >> ~/.shh/authorized_keys'"

如果我直接通过命令行运行它,效果很好。

我想在不同的 OS X 机器上运行这个程序,其中一些机器没有安装 ssh-copy-id。所以,我不考虑使用它。

但无论如何,我愿意接受其他建议。提前谢谢你。

最佳答案

您不需要执行 /bin/sh -c "cat file" 来读取 Go 中的文件。正常打开文件,并将其交给 ssh 命令

keyFile, err := os.Open(filename)
if err != nil {
log.Fatal(err)
}

cmd := exec.Command("ssh", "user@host", "cat >> ~/.ssh/authorized_keys")
cmd.Stdin = keyFile

// run the command however you want
out, err := cmd.CombinedOutput()
if err != nil {
fmt.Println(string(out))
log.Fatal(err)
}

关于ssh - 将 ssh 公钥复制到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33019398/

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