资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

go语言ssh代理 go ssh库

如何设置SSH代理帐号安全性,怎样不允许ssh帐号登录shell

1.更换sshd端口2.禁用ssh密码登录,仅使用证书登录VPS默认的SSHD服务开启在22端口,互联网上有很多所谓的“hacker”时刻用ssh扫描工具扫描IP上的22端口,然后用字典工具尝试是否有类似于“123abc”这样的若密码,一旦您的root密码是弱密码的话,您的VPS就会成为“肉鸡”。下面Hi-VPS介绍几种简单的方法来保护您的VPSSSH安全。1.更换sshd端口最简单的法就是更改sshd默认的22端口,这样ssh扫描工具就以为这个IP上并没有开启sshd服务。sed-i-e's/Port22/Port22233/'/etc/ssh/sshd_config运行上面的命令就把ssh的默认端口改为22233,然后需要重启sshd服务,生效更改:servicesshdrestart这样就能在很大程度上解决VPS的ssh被扫描的风险。只需在ssh登录软件上把默认的ssh端口也改为22233即可。2.禁用ssh密码登录,仅使用证书登录(使用证书登录SSH操作比较麻烦,一般用户在更改默认sshd端口后既可以抵挡一般性的ssd扫描,在不设置ssh证书的前提下也能在很大程度上增加系统的安全性)使用ssh私钥登录而不使用密码登录,能在更大程度上保证ssh的安全。(1)创建私钥可以用putty自带的“PUTTYGEN”来创建私钥,PUTTYGEN就在putty的目录下面,双击运行后弹出界面.点击界面中的Generate按钮,开始生成一个私钥,在过程中鼠标要不停的随机移动产生足够的随机数来帮助生成高强度的私钥:组后生成的私钥就是一个很长的随机字符串,然后输入私钥密码提示(防止你忘了私钥密码),私钥密码:先在复制生成的私钥字符串,然后点击saveprivatekey来保存私钥.(2)上传私钥至VPS先通过ssh登录后,运行如下命令创建ssh服务端配对私钥:mkdir-p$HOME/.sshtouch$HOME/.ssh/authorized_keys\chmodgo-w$HOME$HOME/.ssh$HOME/.ssh/authorized_keysvim$HOME/.ssh/authorized_keys在VIM中按o(小写),然后右键(通过putty登录ssh的时候,putty右键表示复制内容),刚才的私钥密码就复制进去了,然后按Esc,按两次大写字母Z,保存退出.(3)在putty中导入私钥点击“Broser”按钮,导入私钥:然后设置自动登录用户,这就不用每次都输入登录用户名了:OK,保存session导入私钥后,再登录putty就可以直接输入比较简单的私钥密码了,不用输入几十位原始密码.(4)禁用VPS的SSHD的密码登录首先需要编辑sshd_config文件:vim/etc/ssh/sshd_config把PasswordAuthenticationyes这一行改为:PasswordAuthenticationno然后重启ssh服务:servicesshdrestart(5)使用PAGEANT代理私钥如果您有好几台VPS需要管理,就可以用使用PAGEANT,每次甚至不用输入私钥密码就能登录.运行PAGEANT.exe,导入你刚才保存的私钥文件,PAGEANT会让你输入私钥密码,输入后PAGEANT就待在右下角任务栏中,如果需要连接那个ssh,就右键点击PAGEANT,从savedsessions中选择,直接登录.

在绥化等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站建设、做网站 网站设计制作按需设计网站,公司网站建设,企业网站建设,品牌网站设计,营销型网站建设,外贸网站制作,绥化网站建设费用合理。

如何用Go语言打造一个高性能MySQL Proxy

1、先安装必须的软件包:jdk和ssh:检查java -version ;ssh -version 2、Hadoop安装包: 3、安装和配置:解压安装包,然后进入conf文件夹,修改配置文件: Hadoop-env.sh: export JAVA_HOME=“...

关于ssh代理。-我以前一直用的是火狐和Tunnelier。Tunnelier上的host一栏的地址写什么呢 以前地址不好用了

您好!很高兴为您答疑!

Tunnelier 需要经常更换,可用的IP失效很快,如果要使用代理,建议安装autoproxy插件,然后配合Goagent帐号使用,详细教程在:

您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。

如何使用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")

}


分享名称:go语言ssh代理 go ssh库
文章地址:http://www.cdkjz.cn/article/docdhho.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220