将ssh公钥复制到服务器

时间:2015-10-08 14:59:14

标签: ssh go

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

我使用相同的代码运行多个命令没有问题,但不适用于这个特定的命令。

A

基本上我试图跑:

float my_val = 3;
cudaMemcpy(A, &my_val, sizeof(float), cudaMemcpyHostToDevice);

如果我直接通过命令行运行它,它可以正常工作。

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

但无论如何,我对其他建议持开放态度。提前谢谢。

2 个答案:

答案 0 :(得分:4)

您不需要执行/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)
}

答案 1 :(得分:1)

您可以为此目的简单地执行rsync或scp。