ssh交互式会话
大家好,我正在学习golang来构建cli工具,我只是想复制一些我已经在bash中练习过的东西。我想用golang打开ssh交互终端。我尝试使用官方的golang.org/cryptop/ssh软件包,但无法找到满足我需求的解决方案。我是新来的,因此我可能没有完全理解这份文件。我尝试了这个
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
InitServer("152.xx.xx.xx", "ubuntu", "password")
}
const PORT = "22"
func InitServer(server, user, password string) {
sshCommand := exec.Command("ssh", user+"@"+server)
// Set the standard input, output, and error streams to the current process's streams
sshCommand.Stdin = os.Stdin
sshCommand.Stdout = os.Stdout
sshCommand.Stderr = os.Stderr
ssh_err := sshCommand.Run()
if ssh_err != nil {
fmt.Println("Failed to run SSH command:", ssh_err)
}
}
这在Linux上可以工作,但在Windows中运行main.go时不行。Failed to run SSH command: exec: "ssh": executable file not found in %PATH%
我也尝试添加ssh.exe位置到路径变量像这样
sshPath := "C:\\Windows\\System32\\OpenSSH\\ssh.exe"
path := os.Getenv("PATH")
newPath := sshPath + ";" + path
os.Setenv("PATH", newPath)
fmt.Println("Updated PATH:", os.Getenv("PATH"))
Updated PATH: C:\Windows\System32\OpenSSH\ssh.exe;C:\Program Files (x86)\Microsoft SDKs\Azure\CLI2\wbin
有没有办法解决这个问题,或者有没有更好的方法使用官方的crypto/ssh包?
1条答案
按热度按时间epggiuax1#
对于使用crypto/ssh,有几种解决方案,如this,您可以在单独的问题中提出您的问题,以获得正确的答案。
但是对于上面的情况,在Windows系统上使用you can install
openssh
来执行ssh
命令。