go语言连接远程服务器,go部署到服务器

Golang http request 报错dial tcp: lookup xxx.com: no such host

使用golang自带的http包创建http客户端调用远程服务,如果出现 : no such host

创新互联是一家专注于网站建设、成都网站制作与策划设计,荔城网站建设哪家好?创新互联做网站,专注于网站建设十年,网设计领域的专业建站公司;建站业务涵盖:荔城等地区。荔城做网站价格咨询:18982081108

第一种可能是服务器的最大打开文件数

```

ulimit -n         #显示最大打开文件数

ulimit -n        #修改最大打开文件数

```

第二种可能是没有关闭http请求导致的,加上下面这句话

```

defer resp.Body.Close()

```

远程连接服务器问题。非高级技术人员勿入。

Windows 2003远程桌面连接数限制

windows 2003 server远程桌面连接数限制已经困扰很久了,给平时的维护带来麻烦。既然微软不会从根本上解决这个问题,那只有通过其他方式来减少问题的发生几率。

一、在服务器端的处理办法如下(只能时避免连接数受限制,如果已经受限制,以下方法无法解决):

1.设定已经断开的会话结束时间限制,这样避免会话已经断开,但仍然占用一个Session

开始-运行-gpedit.msc-计算机配置-管理模板-windows组件-终端服务-会话,右边窗口选择“为断开的会话设置时间限制”-选择“已启用”,选择一个时间

开始-运行-gpedit.msc-计算机配置-管理模板-windows组件-终端服务-会话,右边窗口选择“到达时间限制时终止会话”-选择“已启用”。

2.无限时保持连接会话,便于远程控制共享任意时候连接会话的数据,也就是共享任意时候连接的远程桌面的当时状态:

开始-管理工具-终端服务配置-服务器配置-限制每个用户使用一个会话

3.养成良好习惯,退出出连接时不要直接关闭,而是使用注销。

二、如果已经有多个连接存在

1.可以通过命令的方式将连接断开,这个方法在2000系统同样可用;如果在任务管理器的用户里注销的方法:

1.在Command Line模式下:输入命令query user

C:\query user

USERNAMESESSIONNAMEIDSTATE IDLE TIMELOGON TIME

dfsadmin0Disc.7/23/2007 7:53 PM

mrsadminrdp-tcp#101Active.7/24/2007 9:31 AM

ID 0的用户是本地登陆的,ID 1是3389登陆的用户,正在运行中,但是仍然占用系统资源和通道,我们要把它踢掉。如下进行操作即可。

2.可通过logoff x命令来注销id未x的登录用户,输入命令:logoff 1,再用query user查询状态

C:\query user

USERNAMESESSIONNAMEIDSTATEIDLE TIMELOGON TIME

dfsadmin0Disc.7/23/2007 7:53 PM

mrsadminrdp-tcp#101Active.7/24/2007 9:31 AM

C:\logoff 1

C:\query user

USERNAMESESSIONNAMEIDSTATEIDLE TIMELOGON TIME

dfsadmin0Discnone7/23/2007 7:53 PM

三、如果连接已经受限制,从远程登录的解决方法:可以用一个“3389DOS版”软件来进行牵制登录。由于这里没办法上传附件,所以没办法。这个软件只能解决windows2003系统的限制,2000系统也没办法。

四、用如下命令形式解决超过最大连接数问题(未验证,可以尝试一下) 运行 mstsc /v:IP /console ,比如 就可以连接到远程系统的的会话。mstsc /v:211.211.0.5 /console 其实这主要是mstsc参数的了解,可通过mstsc /?学习一下。 远程桌面连接 MSTSC [<Connection File>] [/v:<sever[:port]>] [/console] [/f[ullscreen]] [/w:<width> /h:<height>] | /Edit"ConnectionFile" | /Migrate | /? <Connection File> -- 指定连接的 .rdp 文件的名称。 /v:<sever[:port]> -- 指定要连接到的终端服务器。 /console -- 连接到服务器的控制台会话。 /f -- 以全屏模式启动客户端。 /w: <width> -- 指定远程桌面屏幕的宽度。 /h:<height> -- 指定远程桌面屏幕的亮度。 /edit -- 打开指定的 .rdp 文件来编辑。 /migrate -- 将客户端连接管理器创建的旧版连接文件迁移到新的 .rdp 连接文件。 /? -- 生成这个用法消息。

资料2:

一台远程服务器,PCanywhere显示连接忙,无法连接。使用远程连接显示“超过了最大允许连接数”,第一个问题可以过去操作一下服务器,但是也必须把第二个问题解决,搜索了一下,摘抄一些有用的东西。

使用远程桌面的朋友可能经常会遇到“超出最大允许连接数”的问题,这是因为remote desktop for administrator缺省设置是2个连接,而且如果远程登录后不注销而直接关闭远程桌面,实际上session还留在服务器端,所以再次连接就很容易出现上面的提示。解决办法一是用注销来关闭远程桌面,二是限制已经断开连接的session存在的时间,三是增加连接数。

先说增加连接数,目前的两种方法,我明天去测试一下:

(1)开始- 运行- gpedit.msc- 管理模板- Windows组件- 终端服务- 限制连接数量- 启用 TS允许的最大连接数(可修改,不过好像并没有解决我的问题,远程连接服务器还是提示超过了最大允许连接数)

(2)开始- 运行- gpedit.msc- 管理模板- Windows组件- 终端服务- 限制连接数量- 选择“已禁用”,打开终端服务器配置-网卡-把那个允许最大连接数值改的大一些(经过我的测试,此种方法不可用,因为允许最大连接数不可修改,默认为2)。

第二个答案:这是因为windows2003仅支持2个终端用户的登陆。当这种情况出现后,多数人选择的是给机房打电话进行重启服务器。可是带来的损失也是显而易见的。那么我们有什么办法来解决呢?方法当然是有的。我们只需要在一台2003的机器上运行“tsmmc.msc”就可以打开远程桌面连接,在这里我们添加一个新的连接,输入对方的IP地址帐号和密码后就可以成功登陆到对方的桌面中,这时可以再踢下一个用户。就可以解决终端连接数超过最大的问题。

第三个答案:

1、修改终端服务配置

开始 -〉控制面板 -〉管理工具 -〉终端服务配置

左边选择“连接”后双击右边的RDP-Tcp,打开属性设置对话框

选择“会话”标签,选中第一个“替代用户设置”,修改“结束已断开的会话”的时间,此处我修改为“10分钟”,这样当断开连接10分钟内没有再次连接的话,系统就会自动结束这个会话

2、修改组策略

这个级别要高于终端服务配置,在这个里面修改后,上面的终端服务配置那几个修改内容就会变灰,无法修改了。

开始 -〉运行 -〉gpedit.msc 左面计算机配置-〉管理模板-〉windows组件-〉终端服务

右面双击限制连接数量打开设置对话框,选择“已启用”,在结束已断开的会话中选择时间。

问题1:

远程桌面断开链结后如何实现自动注销,不需要用管理员帐号登录服务器手动注销该用户名?

回答:

当您对独享服务器时,可能会遇到由于本地到服务器端网络不稳定、客户端主机突然死机等原因造成远程桌面突然断开,并尝试多次连接后仍然中断,却又达到最大远程桌面连接数后,只能通过重启服务器来解决的问题。现在我们就来通过对服务器端的设置解决此问题: EYIiIQ2 Ny

P~F3K{.1

首先登陆服务器点击:开始---设置---控制面板---管理工具---终端服务配置,打开“终端服务配置”配置后,我们点击窗口左侧“连接”,此时窗口右侧列出RDP-Tcp,右键点击RDP-Tcp连接---属性,再点击“会话”标签,我们将“替代用户设置”钩选,并将“结束已断开的会话”设置为10分钟,点击“确定”设置完毕。见下图示

这样设置完毕后您就不用担心维护服务器时遇到此类问题的烦恼,当您本地与服务器端异常中断时,耐心等待10分钟后,服务器端将自动注销上次的远程连接。10分钟后您可以再次成功远程登陆服务器进行工作。

golang SSH客户端三件套 - 1远程连接 shell

golang SSH客户端系列文章目录

SSH(Secure Shell)协议在远程登录时比较常用,但是除此之外还有一些其它的功能也很好用,比如端口映射,X11转发,sftp文件传输等。

以下三篇文章将介绍golang版SSH的远程登录功能,端口映射功能及sftp文件传输功能。X11包含GUI的一些操作,没有找到相关的包,故不做介绍

通过golang自带的ssh包 golang.org/x/crypto/ssh 可以实现远程登录功能, 默认是不支持tab键和上下箭头的 ,

通过导入golang.org/x/crypto/ssh/terminal来创建VT100终端可以支持tab等功能,让golang版本的ssh客户端体验和平时用的其它客户端差不多。

如何使用Go语言实现远程执行命令

一般命令

所谓一般命令,就是在一定时间内会执行完的命令。比如 grep, cat 等等。 执行命令的步骤是:连接,执行,获取结果

连接

连接包含了认证,可以使用 password 或者 sshkey 2种方式来认证。下面的示例为了简单,使用了密码认证的方式来完成连接。

import (

"fmt"

"time"

"golang.org/x/crypto/ssh"

)

func connect(user, password, host string, port int) (*ssh.Session, error) {

var (

auth []ssh.AuthMethod

addr string

clientConfig *ssh.ClientConfig

client *ssh.Client

session *ssh.Session

err error

)

// get auth method

auth = make([]ssh.AuthMethod, 0)

auth = append(auth, ssh.Password(password))

clientConfig = ssh.ClientConfig{

User: user,

Auth: auth,

Timeout: 30 * time.Second,

}

// connet to ssh

addr = fmt.Sprintf("%s:%d", host, port)

if client, err = ssh.Dial("tcp", addr, clientConfig); err != nil {

return nil, err

}

// create session

if session, err = client.NewSession(); err != nil {

return nil, err

}

return session, nil

}

连接的方法很简单,只要提供登录主机的 用户*, *密码*, *主机名或者IP*, *SSH端口

执行,命令获取结果

连接成功后,执行命令很简单

import (

"fmt"

"log"

"os"

"time"

"golang.org/x/crypto/ssh"

)

func main() {

session, err := connect("root", "xxxxx", "127.0.0.1", 22)

if err != nil {

log.Fatal(err)

}

defer session.Close()

session.Run("ls /; ls /abc")

}

上面代码运行之后,虽然命令正常执行了,但是没有正常输出的结果,也没有异常输出的结果。 要想显示结果,需要将 session 的 Stdout 和 Stderr 重定向 修改 func main 为如下:

func main() {

session, err := connect("root", "xxxxx", "127.0.0.1", 22)

if err != nil {

log.Fatal(err)

}

defer session.Close()

session.Stdout = os.Stdout

session.Stderr = os.Stderr

session.Run("ls /; ls /abc")

}

这样就能在屏幕上显示正常,异常的信息了。

交互式命令

上面的方式无法远程执行交互式命令,比如 top , 远程编辑一个文件,比如 vi /etc/nginx/nginx.conf 如果要支持交互式的命令,需要当前的terminal来接管远程的 PTY。

func main() {

session, err := connect("root", "olordjesus", "dockers.iotalabs.io", 2210)

if err != nil {

log.Fatal(err)

}

defer session.Close()

fd := int(os.Stdin.Fd())

oldState, err := terminal.MakeRaw(fd)

if err != nil {

panic(err)

}

defer terminal.Restore(fd, oldState)

// excute command

session.Stdout = os.Stdout

session.Stderr = os.Stderr

session.Stdin = os.Stdin

termWidth, termHeight, err := terminal.GetSize(fd)

if err != nil {

panic(err)

}

// Set up terminal modes

modes := ssh.TerminalModes{

ssh.ECHO: 1, // enable echoing

ssh.TTY_OP_ISPEED: 14400, // input speed = 14.4kbaud

ssh.TTY_OP_OSPEED: 14400, // output speed = 14.4kbaud

}

// Request pseudo terminal

if err := session.RequestPty("xterm-256color", termHeight, termWidth, modes); err != nil {

log.Fatal(err)

}

session.Run("top")

}

服务器怎样连接?

1、在电脑桌面上,鼠标单击【开始】,移动到【所有程序上】

2、鼠标拖动滚动条,找到【附件】,在附件的文件夹下继续找到程序【远程桌面连接】,经常使用的可以右键发送到桌面快捷方式,方便以后使用。

3、也可以使用快捷键【Win+R】调出运行,输入【mstsc】回车

4、在远程连接的界面中,点击【显示选项】,在计算机中输入远程服务器的IP地址,以及用户名

5、接着会提示输入密码,输入你的服务器密码即可,不知道密码的可以去服务器提供商的后台修改密码即可。勾选【记住凭据】,之后远程就不需要再次输入密码了。

6、接着连接成功就会出现服务器界面。


网站名称:go语言连接远程服务器,go部署到服务器
分享网址:http://pwwzsj.com/article/hsssed.html