不出网连接内部ssh小工具
不出网连接内部SSH小工具
这个月HW遇到一个不出网的环境,扫描一些ssh弱口令结果,reg代理不稳定,现场写了个小工具
package main
import (
"fmt"
"flag"
"golang.org/x/crypto/ssh"
"log"
"time"
)
func main(){
var user string
var password string
var host string
var port int
var commond string
flag.StringVar(&user, "u", "root", "账号,默认为root")
flag.StringVar(&password, "p", "123456", "密码,默认为123456")
flag.StringVar(&host, "h", "localhost", "主机名,默认为localhost")
flag.IntVar(&port, "P", 22, "端口号,默认为22")
flag.StringVar(&commond, "c", "id", "端口号,id")
flag.Parse()
sshType := "password"
config := &ssh.ClientConfig{
Timeout: time.Second,//ssh 连接time out 时间一秒钟, 如果ssh验证错误 会在一秒内返回
User: user,
HostKeyCallback: ssh.InsecureIgnoreHostKey(), //这个可以, 但是不够安全
//HostKeyCallback: hostKeyCallBackFunc(h.Host),
}
if sshType == "password" {
config.Auth = []ssh.AuthMethod{ssh.Password(password)}
}
//dial 获取ssh client
addr := fmt.Sprintf("%s:%d", host, port)
sshClient, err := ssh.Dial("tcp", addr, config)
if err != nil {
log.Fatal("创建ssh client 失败",err)
}
defer sshClient.Close()
//创建ssh-session
session, err := sshClient.NewSession()
if err != nil {
log.Fatal("创建ssh session 失败",err)
}
defer session.Close()
//执行远程命令
combo,err := session.CombinedOutput(commond)
if err != nil {
log.Fatal("远程执行cmd 失败",err)
}
log.Println("命令输出:",string(combo))
}
使用方法:
agent -u root -p root -h xxx -c "ping -c 2 114.114.114.114"