Come esportare la chiave pubblica del mio SSH?


12

Devo impostare sessioni ssh tra due server e non voglio che lo script compili sempre username e password.

Tuttavia, non riesco a scoprire da dove il server SSH sta usando la sua configurazione.

bash-2.05# ssh -V
Sun_SSH_1.1, SSH protocols 1.5/2.0, OpenSSL 0x0090700f

Ho file di file di certificato in entrambi / etc / ssh / e ~ / .ssh /. Posso trovare solo un file di configurazione per SSH ed è in / etc / ssh / ssh_config, ma non contiene dati (tutto è commentato).

Qualcuno sa come posso sapere dove è archiviato il certificato o come posso esportarlo in modo da poterlo trasferire sull'altro server? Speravo che i file di configurazione mi avrebbero dato la risposta, ma forniscono poco o nessun aiuto.

Risposte:


17

Supponendo che tu intenda l'autenticazione con chiave pubblica a livello di utente per "certificato" e che tu li abbia creati usando ssh-keygencon la posizione predefinita, dovrebbero trovarsi nel punto in cui li troveranno il tuo client ssh. La chiave è costituita da una parte privata, di solito memorizzata in ~/.ssh/id_rsae una parte pubblica in ~/.ssh/id_rsa.pub. L'ultimo dovrà essere trasferito sul server remoto, di solito su ~/.ssh/authorized_keys.

Il modo più semplice per trasferire la chiave su un altro server è utilizzare ssh-copy-idcon la macchina di destinazione. Se al momento della creazione è stata utilizzata la posizione predefinita, questa chiave verrà utilizzata automaticamente.

Nota, questo /etc/ssh/ssh_configè per il client. Sul server dovrai guardare /etc/ssh/sshd_config. Nella tua configurazione entrambi i server fungeranno sia da ssh-client che da ssh-server, quindi dovresti guardare entrambi i file ad entrambe le estremità.


Ha funzionato. Grazie. L'unica cosa che dovevo fare di più era sul mio client, dovevo specificare il parametro -i (identità) che puntava alla chiave privata.
Chris Dale,

2

È necessario trovare la chiave pubblica ssh per l'utente che sarà l'utente di accesso per lo script.

Ad esempio, se ho serverA e serverB, farei quanto segue.

sudo adduser scriptrunner
...
sudo su - scriptrunner
ssh-keygen
...
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3Nza...... scriptrunner@serverA

quindi fare qualcosa di simile su ServerB

Quindi su serverA, inserire la chiave pubblica dell'utente scriptrunner di serverB /home/scriptrunner/.ssh/authorized_keys

e fare l'opposto su serverB (usando l'utente scriptrunner di serverA su di_chiave autorizzati su /home/scriptrunner/.ssh/authorized_keyssu serverB)

Quindi dovresti essere in grado di fare ssh scriptrunner@serverAda serverB usando il tasto e viceversa.

Puoi anche usare ssh-copy-idper fare il bit autorizzato_keys.


1

Per stabilire una connessione ssh con l'autenticazione con chiave pubblica, l'utente che avvia la connessione deve disporre di una coppia di chiavi pubblica / privata. Su molte distribuzioni di Linux queste chiavi non sono generate di default e devono essere generate dall'utente stesso (o dall'amministratore per loro conto).

Se hai effettuato l'accesso come utente pertinente, vai alla tua home directory ed esegui

ssh-keygen

Accetta tutte le impostazioni predefinite e verrà creata una nuova coppia di chiavi in ​​~ / .ssh / id_rsa e ~ / .ssh / id_rsa.pub. Ora copia la chiave pubblica e incollala nel file ~ / .ssh / authorized_keys dell'account utente di destinazione sul computer di destinazione. Quindi abilita l'autenticazione con chiave pubblica sul computer di destinazione (in / etc / ssh / sshd_config) e dovresti essere a posto.

NOTA : ci sono molte possibili insidie ​​in questo processo quando lo si fa per la prima volta. Tutte le autorizzazioni devono essere corrette e i file devono trovarsi nei posti giusti. Probabilmente è meglio se segui un HowTo come questo .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.