GNU/Linux >> Linux Esercitazione >  >> Linux

ssh-keyscan - ancora promosso con L'autenticità dell'host '[nome host] ([indirizzo IP])' non può essere stabilita

Prova questo:

ssh-keyscan -t rsa [ip_address]

Prendi l'output e incollalo in .ssh/known_hosts. Ora, se vuoi eseguire l'hash di known_hosts, fai questo:

ssh-keygen -H

modifica: Ecco l'unica soluzione di comando. Utilizza il nome host e gli indirizzi IP e gli hash entrambi.

ssh-keyscan -Ht rsa [hostname],[IP address] >> known_hosts

La risposta di kschurig funzionerà ma non è necessariamente la più sicura. Ottiene punti bonus per fare il possibile per consentirti di identificare il server con più di un URI, ad esempio nome host e indirizzo IP. Vale a dire che potresti continuare ad aggiungere URI validi di quell'host estendendo l'elenco delimitato da virgole.

Tuttavia, stavo cercando un modo banale per aggirare l'interazione manuale dell'host sconosciuto della clonazione di un repository git come mostrato di seguito e dovrebbe aiutare a spiegare cosa sta succedendo e come puoi evitare questa parte dello scripting di alcune cose relative a SSH:

[email protected]:~$ git clone [email protected]:viperks/viperks-api.git
Cloning into 'viperks-api'...
The authenticity of host 'bitbucket.org (104.192.143.3)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?

Nota l'impronta digitale della chiave RSA...

Quindi, questa è una cosa SSH, funzionerà per git su SSH e solo per le cose relative a SSH in generale...

[email protected]:~$ nmap bitbucket.org --script ssh-hostkey

Starting Nmap 7.01 ( https://nmap.org ) at 2016-10-05 10:21 EDT
Nmap scan report for bitbucket.org (104.192.143.3)
Host is up (0.032s latency).
Other addresses for bitbucket.org (not scanned): 104.192.143.2 104.192.143.1 2401:1d80:1010::150
Not shown: 997 filtered ports
PORT    STATE SERVICE
22/tcp  open  ssh
| ssh-hostkey:
|   1024 35:ee:d7:b8:ef:d7:79:e2:c6:43:9e:ab:40:6f:50:74 (DSA)
|_  2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40 (RSA)
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 42.42 seconds

Innanzitutto, installa nmap sul tuo driver giornaliero. nmap è molto utile per alcune cose, come rilevare le porte aperte e questo:verificare manualmente le impronte digitali SSH. Ma torniamo a quello che stiamo facendo.

Bene. O sono compromesso nei molteplici punti e macchine in cui l'ho controllato o la spiegazione più plausibile del fatto che tutto sia hunky dory è ciò che sta accadendo.

Quella "impronta digitale" è solo una stringa accorciata con un algoritmo unidirezionale per la nostra comodità umana, con il rischio che più di una stringa si risolva nella stessa impronta digitale. Succede, si chiamano collisioni.

Indipendentemente da ciò, torniamo alla stringa originale che possiamo vedere nel contesto qui sotto.

[email protected]:~$ ssh-keyscan bitbucket.org
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-128
no hostkey alg
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-129
bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-123
no hostkey alg

Quindi, in anticipo, abbiamo un modo per chiedere una forma di identificazione all'host originale.

A questo punto siamo vulnerabili sia manualmente che automaticamente:le stringhe corrispondono, abbiamo i dati di base che creano l'impronta digitale e potremmo richiedere quei dati di base (prevenendo le collisioni) in futuro.

Ora per usare quella stringa in modo da evitare di chiedere informazioni sull'autenticità di un host...

Il file known_hosts in questo caso non utilizza voci di testo in chiaro. Riconoscerai le voci con hash quando le vedi, sembrano hash con caratteri casuali invece di xyz.com o 123.45.67.89.

[email protected]:~$ ssh-keyscan -t rsa -H bitbucket.org
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-128
|1|yr6p7i8doyLhDtrrnWDk7m9QVXk=|LuKNg9gypeDhfRo/AvLTAlxnyQw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==

La prima riga di commento appare in modo esasperante, ma puoi sbarazzartene con un semplice reindirizzamento tramite la convenzione ">" o ">>".

Poiché ho fatto del mio meglio per ottenere dati non contaminati da utilizzare per identificare un "host" e fidarsi, aggiungerò questa identificazione al mio file known_hosts nella mia directory ~/.ssh. Poiché ora verrà identificato come un host noto, non riceverò il messaggio sopra menzionato quando eri un giovane.

Grazie per essere rimasto con me, ecco qua. Sto aggiungendo la chiave RSA bitbucket in modo da poter interagire con i miei repository git lì in modo non interattivo come parte di un flusso di lavoro CI, ma qualunque cosa tu faccia quello che vuoi.

#!/bin/bash
cp ~/.ssh/known_hosts ~/.ssh/known_hosts.old && echo "|1|yr6p7i8doyLhDtrrnWDk7m9QVXk=|LuKNg9gypeDhfRo/AvLTAlxnyQw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==" >> ~/.ssh/known_hosts

Quindi, è così che rimani vergine per oggi. Puoi fare lo stesso con github seguendo indicazioni simili nel tuo tempo libero.

Ho visto così tanti post di overflow dello stack che ti dicevano di aggiungere la chiave a livello di codice alla cieca senza alcun tipo di controllo. Più controlli la chiave da diverse macchine su reti diverse, maggiore è la fiducia che l'host è quello che dice di essere, e questo è il meglio che puoi sperare da questo livello di sicurezza.

SBAGLIATOssh -oStrictHostKeyChecking=nessun nome host [comando]

SBAGLIATOssh-keyscan -t rsa -H hostname>> ~/.ssh/known_hosts

Non fare nessuna delle cose di cui sopra, per favore. Ti viene data l'opportunità di aumentare le tue possibilità di evitare che qualcuno origlia i tuoi trasferimenti di dati tramite un attacco man in the middle:cogli questa opportunità. La differenza sta letteralmente verificando che la chiave RSA che hai è quella del server in buona fede e ora sai come ottenere quelle informazioni per confrontarle in modo da poterti fidare della connessione. Ricorda solo che più confronti tra computer e reti diversi di solito aumentano la tua capacità di fidarti della connessione.


Linux
  1. 3 cose utili che puoi fare con lo strumento IP in Linux

  2. Come utilizzare lo stesso alias Ssh con più indirizzi/porte/ecc. host?

  3. Elementi essenziali di Rackspace Cloud:controlla l'impronta digitale dell'host SSH di un server con la console web

  4. In che modo uno script bash può conoscere la directory in cui è installato quando viene fornito con . operatore?

  5. Come posso controllare la tastiera e il mouse con Python?

4 modi per modificare un PDF con il comando pdftk-java

Come posso eseguire un comando diverso ma con gli stessi argomenti?

Impossibile rinominare un file il cui nome inizia con un trattino

Può eseguire il ping/ssh attraverso la LAN ma non con il Wi-Fi

libvirt:come posso avviare un dominio all'avvio dell'host?

Come posso aprire un file con i numeri di riga visualizzati dalla riga di comando in "vi"?