SSH senza password con percorso del file di identità non predefinito


16

Come parte di uno script di avvio, devo aprire automaticamente diverse finestre di gnome-terminal, uno di questi terminali invia automaticamente:

ssh user@192.168.1.3

Il limite è che devo ancora digitare una password per completare la connessione SSH.

Quello che voglio fare è che il mio script avvii il comando e completi la connessione. In tal senso, ho cercato di seguire le istruzioni come indicato nella risposta accettata qui .

Dal sistema da cui desidero connettermi, ho eseguito:

ssh-keygen
Enter file in which to save the key: /home/user/ssh/keys/server1key

Mi ha quindi richiesto di inserire una passphrase. L'ho lasciato vuoto, poiché non ero sicuro di cosa sarebbe stato, quindi ho pensato che per impostarne uno sarebbe stato necessario sbloccarlo con detta passphrase ogni volta che l'avrei usato.

Continuando con le istruzioni collegate sopra, ho quindi eseguito e ricevuto il seguente:

ssh-copy-id user@IP
ERROR: No identities found

Una rapida ricerca ha rivelato che dovevo specificare la posizione della chiave, poiché non si trovava nella posizione di salvataggio predefinita, quindi ho risolto che:

ssh-copy-id -i /home/user/ssh/keys/server1key.pub user@192.168.1.3

Dopo aver richiesto la password del server, ha aggiunto correttamente la chiave. Tuttavia, dopo aver tentato di accedere con "ssh user @ IP", mi è stata comunque richiesta la password.

Per quanto ne so, ho seguito correttamente le istruzioni collegate, quindi o mi manca qualcosa o forse una configurazione esistente mi impedisce di farlo funzionare?

Entrambi i sistemi usano 18.04 e openssh.


Quindi devo specificare il percorso del file .pub quando invio il comando SSH?
hiigaran,

Ho un modo un po 'diverso di organizzare i miei file, quindi le posizioni non predefinite, ma voi ragazzi avete aiutato molto. Grazie. Sentiti libero di farne una risposta che posso accettare.
hiigaran,

Risposte:


35

Non riesce per lo stesso motivo che è ssh-copy-idfallito la prima volta, ovvero perché hai scelto un percorso non predefinito per il file di identità.

Puoi risolverlo allo stesso modo, aggiungendo -i /home/user/ssh/keys/server1keyal tuo sshcomando - nota che il lato client ha bisogno della posizione del file della chiave privata .

A partire dal man ssh

 -i identity_file
         Selects a file from which the identity (private key) for public
         key authentication is read.  The default is ~/.ssh/identity for
         protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
         ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.

In alternativa, è possibile creare una ~/.ssh/configvoce di file per l'host lungo le righe di

Host            somename
Hostname        192.168.1.3
User            user
IdentityFile    /home/user/ssh/keys/server1key

1
Ho sempre pensato che il file di configurazione richiedesse il rientro - vedo che non è così. Intruiging.
Boris the Spider,

Chiunque utilizzi OpenSSH dovrebbe avere un ~/.ssh/config, altrimenti OpenSSH utilizza il valore predefinito di sistema /etc/ssh/ssh_config. Nel caso qualcuno lo trovi utile, ho caricato un ssh_config preconfigurato sul mio GitHub qualche tempo fa come punto di partenza per utenti che potrebbero non avere il tempo di leggere la pagina man ssh_config
JW0914

@ JW0914 questo è solo metà vero: i singoli valori in ~/.ssh/configavranno la precedenza su quelli globali ssh_config, ma il solo fatto di avere il file non disabiliterà la configurazione a livello di sistema.
Sebastian Stark,

@SebastianStark Forse hai letto male il mio commento, poiché non ho mai dichiarato che disabiliterebbe la configurazione a livello di sistema. Ciò che ho affermato era preciso al 100%.
JW0914,

2

Un altro motivo che ha ssh-copy-idesito negativo è che la chiave non è stata aggiunta all'agente SSH.

Innanzitutto, controlla e avvia se ssh-agentè in esecuzione:

eval "$(ssh-agent -s)"

Se si ottiene l'ID processo, è possibile aggiungere la chiave:

ssh-add -k /home/user/ssh/keys/server1key

Con -kte aggiungi la chiave al portachiavi.

Verifica se le chiavi vengono aggiunte con:

ssh-add -l

ssh-copy-id dovrebbe funzionare ora.


-1

Spero che questo funzioni per te. "Sshpass -p yourpassword" accederà automaticamente all'host remoto.

[root @ localhost .ssh] # sshpass -p password123 ssh -l root localhost


-1

Esegui solo 2 comandi:

ssh-keygen
ssh-copy-id

Risposta lunga:

user@ip:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): temp_file
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in stemp.
Your public key has been saved in stemp.pub.
The key fingerprint is:
SHA256:5**M user@ip
The key's randomart image is:
+---[RSA 2048]----+
|  ...            |
| ...             |
| ..              |
| ..+.    o .     |
|                 |
|    B            |
|                 |
|=      *         |
|=+   o .         |
+----[SHA256]-----+

E poi:

user@ip:~$ ssh-copy-id -i ~/.ssh/id_rsa.pub ipDestination -p portDest
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.