【发布时间】:2017-08-01 17:42:28
【问题描述】:
我正在尝试使用 Golang SSH package 连接到远程服务器,但我的工作站和此远程服务器之间存在 SOCKS。
我可以通过简单地设置 LD_PRELOAD 和 LD_LIBRARY_PATH 然后运行来连接到服务器:
$ export LD_PRELOAD="/path/to/lib"
$ export LD_LIBRARY_PATH="/path/to/lib"
$ ssh user@hostname
但是当我在 Go 代码中设置这些变量时,它不起作用:
os.Setenv("LD_PRELOAD", "/path/to/file")
os.Setenv("LD_LIBRARY_PATH", "/path/to/file")
如果我在 Go 代码中设置这些变量并尝试以下操作,它会起作用:
ssh := exec.Command("ssh", "hostname")
output, _ := ssh.Output()
fmt.Println(string(output))
ssh PermitUserEnvironment 设置为yes
有没有办法“强制”Golang SSH 使用这些环境变量?
【问题讨论】:
-
LD_PRELOAD 和 LD_LIBRARY_PATH 与 ssh 本身无关,就是将一些共享库注入到您的 openssh 进程中。如果您不使用 openssh 二进制文件,则无法将其他共享库预加载到其中。