Skip to content

Instantly share code, notes, and snippets.

@scovl
Created February 15, 2023 17:39
Show Gist options
  • Save scovl/17472e97754fc7c956f9b97c7b693f8f to your computer and use it in GitHub Desktop.
Save scovl/17472e97754fc7c956f9b97c7b693f8f to your computer and use it in GitHub Desktop.
Connect ssh/key in golang
package main
import (
"fmt"
"golang.org/x/crypto/ssh"
"net"
"time"
)
func main() {
var ipRange string = "192.168.1."
var sshKey string = "<caminho/para/chave/ssh>"
for i := 1; i <= 255; i++ {
ip := ipRange + fmt.Sprintf("%d", i)
go sshConnect(ip, sshKey)
}
time.Sleep(10 * time.Second)
}
func sshConnect(ip string, sshKey string) {
sshConfig := &ssh.ClientConfig{
User: "user",
Auth: []ssh.AuthMethod{
publicKeyFile(sshKey),
},
}
connection, err := ssh.Dial("tcp", ip+":22", sshConfig)
if err == nil {
fmt.Println("Conexão SSH bem sucedida com", ip)
connection.Close()
}
}
func publicKeyFile(file string) ssh.AuthMethod {
buffer, err := ioutil.ReadFile(file)
if err != nil {
return nil
}
key, err := ssh.ParsePrivateKey(buffer)
if err != nil {
return nil
}
return ssh.PublicKeys(key)
}
//Explicação:
//ipRange: define o prefixo do endereço IP que será verificado. Neste exemplo, o código irá verificar todos os endereços IP entre 192.168.1.1 e 192.168.1.255.
//sshKey: caminho para o arquivo da chave SSH que será usada para fazer a conexão.
//O loop for verifica cada endereço IP dentro do intervalo especificado usando a função sshConnect.
//A função sshConnect tenta fazer uma conexão SSH com o endereço IP fornecido usando a chave SSH especificada. Se a conexão for bem-sucedida, a mensagem "Conexão SSH bem-sucedida com <IP>" é exibida.
//A função publicKeyFile lê o arquivo da chave SSH e retorna um objeto ssh.AuthMethod que pode ser usado para autenticar a conexão SSH.
//Lembre-se de substituir ipRange e sshKey pelos valores correspondentes ao seu ambiente. Você também pode ajustar o tempo de espera após o loop principal de acordo com a quantidade de IPs a serem verificados.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment