Created
February 15, 2023 17:39
-
-
Save scovl/17472e97754fc7c956f9b97c7b693f8f to your computer and use it in GitHub Desktop.
Connect ssh/key in golang
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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