
php小编新一今天为大家介绍一种常见的网络错误——“SSH 代理,数据包长度错误”。在使用SSH代理工具时,有时候会遇到这个错误提示,而造成网络连接失败。该错误通常是因为数据包长度设置不正确所致。在本文中,我们将详细解释这个错误的原因,并提供一些解决方法来解决这个问题,确保您的网络连接畅通无阻。
在 go 中实现 ssh 代理,由于数据包长度错误而出错,这些是 ssh 在调试模式下的错误:
debug1: ssh2_msg_kexinit sent bad packet length 1231976033. ssh_dispatch_run_fatal: connection to ::1 port 8080: message authentication code incorrect
代码:
func handleSSH(conn net.Conn, r *bufio.Reader, protocol string) {
target, err := url.Parse("ssh://localhost:3333")
if err != nil {
fmt.Println("Error parsing target", err)
conn.Close()
return
}
targetConn, err := net.Dial("tcp", target.Host)
if err != nil {
fmt.Println("error dialing SSH target:", err)
conn.Close()
return
}
defer targetConn.Close()
var wg sync.WaitGroup
wg.Add(2)
go func() {
_, err := io.Copy(targetConn, conn)
if err != nil {
fmt.Println("error copying data to target:", err)
}
wg.Done()
}()
go func() {
_, err := io.Copy(conn, targetConn)
if err != nil {
fmt.Println("error copying data from target:", err)
}
wg.Done()
}()
wg.Wait()
conn.Close()
}
// EDIT
func connection(conn net.Conn) {
r := bufio.NewReader(conn)
protocol, err := r.ReadString('\n')
if err != nil {
fmt.Println("Error reading first line", err)
conn.Close()
return
}
if protocol[0:3] == "SSH" {
handleSSH(conn, r, protocol)
}
}
func main() {
ln, err := net.Listen("tcp", ":8080")
if err != nil {
panic(err)
}
defer ln.Close()
for {
conn, err := ln.Accept()
if err != nil {
panic(err)
}
go connection(conn)
}
}编辑:添加了有关如何启动连接并重现错误的相关信息的代码。
我最好的猜测是 ssh 协商过程被中断,并且事情不同步。
2010.09.03更新优化前台内核处理代码;优化后台内核、静态生成相关代码,生成速度全面提升;修改前台静态模板中所有已知错误;修正后台相关模块所有已知错误;更换后台编辑器,功能更强大;增加系统说明书。免费下载、免费使用、完全无限制。完全免费拥有:应广大用户要求,千博网络全面超值发布企业网站系统个人版程序包:内含Flash动画源码、Access数据库程序包、SQL数据库程序包。全站模块化操作,静态
0
代码从客户端读取第一行并检查协议类型,以便调用适当的处理程序:
protocol, err := r.ReadString('\n')
...
if protocol[0:3] == "SSH" {
handleSSH(conn, r, protocol)
}
}但是代码无法将已读取的字节转发到连接的服务器。这些字节位于 protocol 中,并提供给 handlessh。但是一旦建立连接,它就无法将这些字节发送到连接的服务器。相反,它仅在客户端和服务器之间复制新数据。
这意味着服务器没有从客户端获取第一行。因此,它可能会抱怨诸如 invalid ssh id string. 之类的协议错误,该错误被转发到客户端并被误解为来自 ssh 连接的有效数据。
以上就是SSH 代理,数据包长度错误的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号