草庐IT

ssh2-sftp

全部标签

ssh - goftp 包是否提供安全的文件传输?

我正在处理一个项目,该项目当前正在使用在goftp中找到的goftp将一些文件上传到网站目录中,供网站使用和查看。我知道质疑此设置的安全性,所以我研究了golang的ssh和sftp,但我遇到了问题,这让我很头疼,因为我是golang的新手。我的问题是,仅使用goftp会带来哪些安全威胁或问题?是否有更安全的替代方案?提前致谢! 最佳答案 所有普通FTP服务器本质上都是不安全的,因为它们通过未加密的链接使用纯文本进行身份验证。这意味着同一网络(特别是WiFi网络)上的任何人都可以嗅探网络流量并轻松提取用于身份验证的用户名和密码。您已

golang ssh 由 nc 替换 ssh ProxyCommand

我打算实现一个golang版本的ssh客户端来通过堡垒连接到目标服务器。但不幸的是,我在替换nc代理时失败了。在我本地的ssh配置:HostbastionHostNamexxx.xxx.xxx.xxxUserec2-userIdentityFile~/.ssh/xxx-bastion.pemHost10.0.*.*Userec2-userIdentityFile~/.ssh/xxx-dest.pemProxyCommandssh-qbastion"nc-w3600%h%p"我的golang实现如下:var(Bastion="xxx.xxx.xxx.xxx:22"Target="xxx.

go - 关闭加密 ssh session 以释放 golang 中所有资源的正确方法?

TL;DR-关闭golang.org/x/crypto/sshsession以释放所有资源的正确方法是什么?到目前为止我的调查:golang.org/x/crypto/ssh*Session有一个Close()函数调用*ChannelClose()函数发送消息(我猜是远程服务器)关闭,但我没有看到任何关于关闭其他资源的信息,比如从*SessionStdoutPipe()函数。查看*SessionWait()代码,我看到*SessionstdinPipeWriter已关闭,但与无关标准输出管道。这个包感觉很像os/exec包,它保证使用os/execWait()函数将清理所有资源。在那里

ssh - 戈朗 : Execute shell commands on remote server

我有50台左右的Linux机器(RHEL)。我想通过在中央机器上运行的go脚本在这些机器上运行一些命令。我已经为从中央机器到所有远程机器的所有人设置了无密码ssh身份验证。尽管我也对非ssh解决方案持开放态度,但首选安全的解决方案。正在运行的命令会随着时间而改变。我还想在中央机器上运行的脚本中处理在远程机器上运行的命令的输出和返回代码。我只找到这个sshpackage,仅支持密码认证方式,不够好。还有其他选择吗? 最佳答案 你可以使用这个包https://github.com/hypersleep/easyssh例如你可以远程调用p

go - 如何使用 socks 代理连接远程 ssh 服务器?

packagemainimport("errors""fmt""net""golang.org/x/crypto/ssh")var(socksstring="127.0.0.1:8000"serverstring="192.168.1.1:2222"cmdstring=""loginstring="root"passwordstring="")funcmain(){c,err:=netConn(socks)iferr!=nil{fmt.Println(err)}conf:=&ssh.ClientConfig{User:login,Auth:[]ssh.AuthMethod{ssh.Pa

mysql - 如何使用 go-sql-driver 通过 SSH 上的标准 TCP/IP 连接到 MySQL?

我目前在Windows8.1上使用MySQLWorkbench,通过SSH使用标准TCP/IP访问Linux服务器上的远程MySQL数据库。基本上我有以下信息:SSH主机名:dbserver.myorg.com:ssh-portSSH用户名:myRemoteLoginUsernameSSH密码:(存储在保管库中)SSHkey文件:本地.ppk文件的路径MySQL主机名:127.0.0.1MySQL服务器端口:3306用户名:myRemoteDb用户名密码:(存储在保险库中)默认架构:myRemoteDatabaseName如何使用github.com/go-sql-driver/mys

使用 crypto/ssh 的 golang scp 文件

我正在尝试通过ssh下载远程文件以下方法在shell上运行良好sshhostname"tarcz/opt/local/folder">folder.tar.gz然而,在golang上使用相同的方法会在输出工件大小上产生一些差异。例如,具有纯shell的相同文件夹会生成工件gz文件179B,而与go脚本相同的文件夹会生成178B。我假设io.Reader中遗漏了某些内容或session较早关闭。请大家帮忙。这是我的脚本示例:funcexecuteCmd(cmd,hostnamestring,config*ssh.ClientConfig,pathstring)error{conn,_:=

ssh - 将公钥编码为 OpenSSH 格式以供显示

我有一个rsa.PublicKey对象(从rsa.PrivateKey中检索)。我正在尝试将其导出为OpenSSH格式,以便在网页中显示它。我注意到go.crypto/sshlibrary,似乎是这样做的。还有thediscussion关于它的实现(这实际上正是我需要做的)不幸的是,我有点卡住了,因为返回的字节数组采用未知编码,我不能只将它转换为字符串来显示它。funcPublicKey(rsaKeyrsa.PublicKey)string{key,_:=ssh.NewPublicKey(&rsaKey)marshalled:=ssh.MarshalPublicKey(key)retu

go - 模拟加密/ssh/终端

有没有人成功或有任何关于模拟进入(用于测试目的)term.ReadPassword(int(os.Stdin.Fd()))的最佳方法的想法?>在golang.org/x/crypto/ssh/terminal包中调用?我已经尝试创建一个临时文件(相对于os.Stdin)并将字符串值写入testing\n或testing\r到临时文件,但出现错误inappropriateioctlfordevice。我猜这是与TTY相关的东西或缺少的特定格式(?),但我真的不确定。感谢帮助。 最佳答案 如果您通过创建os.Stdin引用的假文件来st

networking - Golang使用sftp golang库将远程文件复制到本地文件夹

我得到了在远程主机上创建文件的代码:config:=&ssh.ClientConfig{User:"xx",HostKeyCallback:nil,Auth:[]ssh.AuthMethod{ssh.Password("xx"),},}config.SetDefaults()sshConn,err:=ssh.Dial("tcp","192.xx.1.xx:22",config)iferr!=nil{panic(err)}defersshConn.Close()client,err:=sftp.NewClient(sshConn)iferr!=nil{panic(err)}defercl