come si crea una chiave ssh per un altro utente?


90

Sto cercando di creare una chiave ssh per un altro utente. Ho effettuato l'accesso come root. Posso semplicemente modificare i file generati da ssh-keygen e cambiare root con l'utente che desidero?


5
Se generi la chiave per l'utente, devi anche disporre di un metodo sicuro per ottenere la chiave privata e la sua passphrase per l'utente. Molto meglio l'utente genera la chiave e poi ti invia semplicemente la chiave pubblica.
user9517

Ma non è così difficile non consentire l'accesso con password? Se sono solo chiave e ho impostato un nuovo utente, non possono accedere per impostare la loro chiave.
LVLAaron,

Risposte:


79

Puoi farlo con ssh-keygen, tuttavia, ricorda che la chiave privata è pensata per essere privata per l'utente, quindi dovresti stare molto attento a tenerla al sicuro, come la password dell'utente. O ancora più sicuro, poiché è probabile che l'utente non debba modificarlo al primo accesso.

ssh-keygen -f anythingcrea due file nella directory corrente. anything.pubè la chiave pubblica, che è possibile aggiungere all'utente ~/.ssh/authorized_keyssu qualsiasi server di destinazione.

L'altro file, appena chiamato anythingè la chiave privata e quindi deve essere archiviato in modo sicuro per l'utente. Il percorso predefinito sarebbe ~username/.ssh/id_rsa(qui denominato id_rsa, che è predefinito per le chiavi rsa). Ricorda che la .sshdirectory non può essere leggibile o scrivibile da chiunque tranne l'utente, e la directory home dell'utente non può essere scrivibile da nessuno tranne l'utente. Allo stesso modo, anche le autorizzazioni devono essere rigorose sulla chiave privata: lettura / scrittura solo per l'utente, e la directory .ssh e il file di chiavi privato devono essere di proprietà dell'utente.

Tecnicamente potresti conservare la chiave ovunque. Con ssh -i path/to/privatekeyte puoi specificare quella posizione, durante la connessione. Ancora una volta, la proprietà e le autorizzazioni appropriate sono fondamentali e ssh non funzionerà se non le hai nel modo giusto.


4
+1 per aver espresso che si tratta di una chiave privata (!)
mailq,

51
Stai assumendo che l'utente sia una persona reale. Se il login è un utente non interattivo utilizzato per eseguire attività di utilità (ad es. Eseguendo script di maine su server remoti), allora sì, probabilmente genererai manualmente la chiave per quell'utente. Certo, questo ha le sue implicazioni sulla sicurezza, ma questa è un'altra storia.
Rilindo,

2
@Rilindo ssh -ia una chiave privata per un processo senza privilegi è il modo in cui gestisco più di alcuni processi di backup rsync automatizzati. :)
Shadur,

9
Non mi piace quel tipo di risposta che dice "non dovresti farlo" ma non rispondi alla domanda. Mentre questo può essere corretto e utile per il contesto della domanda originale, altre persone possono avere la stessa domanda in una situazione diversa. "Le chiavi ssh non dovrebbero mai essere generate per un altro utente": questo è vero nel caso semplice. Ma considera più identità della stessa persona fisica, per esempio. Potrebbero esserci più account su più sistemi, non tutti consentono di generare chiavi o di proteggere le chiavi private in modo appropriato.
Gustave,

usersoppureuser's
Utente

135

Non ci sono informazioni utente nelle chiavi SSH .

L'ultimo campo in una chiave pubblica è un commento (e può essere modificato eseguendo il comando seguente ssh-keygen -C newcomment).

Non è necessario fare nulla di speciale per creare una chiave per un altro utente, basta inserirlo nella posizione corretta e impostare le autorizzazioni.


5
Questa è la risposta corretta
sebnukem,

1
Ho appena testato e confermato, non solo è solo un commento, ma può essere rimosso e i tasti funzionano ancora. Ho sempre pensato che avesse importanza! Grazie per aver dato la risposta corretta. Come i commenti sopra, ho un motivo per creare chiavi per altri utenti, ma non dirò perché, quindi non c'è argomento.
FreeSoftwareServers,

18

Diventa l'utente usando su ed esegui la chiave come quell'utente:

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):

Perché specificare il DSA?
Ram

Whoops, forza dell'abitudine. Lasciami aggiornare.
Rilindo,

4
dovresti usare rsa (o possibilmente una delle varianti della curva elittica). dsa è limitato a dimensioni insicure. rsa1 è un formato legacy per ssh1 che nessuno dovrebbe più usare.
Peter Green,

Il mio joeuserè un utente del servizio, quindi non riesco ad accedere come loro. Come posso consentire a un utente del servizio (che esegue solo processi) di avere una chiave ssh?
Jonathan,

@JonathanLeaders Dovresti specificare la shell per l'utente quando diventa quell'utente. Qualcosa del genere: `` `[root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: Utente FTP: / var / ftp: / sbin / nologin [root @ ip-10-254-41-211 ~] # su - ftp su: avviso: impossibile cambiare la directory in / var / ftp: nessun file o directory al momento non disponibile. [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ `` `
Rilindo

6

Come visto qui , è possibile utilizzare chmod per modificare le autorizzazioni di lettura della cartella dell'utente a cui si desidera aggiungere la chiave SSH.

vim /home/username/.ssh/authorized_keys

Quindi, è sufficiente incollare la chiave in una nuova riga nella parte inferiore di quel file


1
Il link è morto ...
Nyxynyx il
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.