lovecpp@home:~$

不出网连接内部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"