Come archiviare le credenziali SSH nel terminale


33

Sono nuovo sul MacBook e gestisco El Capitan.

Sto migrando l'utilizzo della mia macchina da un PC a un MacBook. Sono da molto tempo utente di PuTTY e SuperPuTTY su un PC.

Voglio creare e salvare le credenziali di accesso ai miei server Web in MacBook Terminal proprio come ho fatto in SuperPuTTY sul PC.

È possibile salvare le credenziali di accesso al server Web in Mac Terminal?

Ecco il mio obiettivo generale:

Vorrei sapere se esiste un modo semplice in Mac Terminal per memorizzare le seguenti credenziali di accesso alla riga di comando e quindi utilizzare una sorta di shortcode per connettersi al mio server Web tramite Terminal:

ssh -p 2200 root@123.456.789.012
Password: ****************************************************************

Gestisco e mi collego a 5 diversi server Web, quindi l'ordinamento e l'organizzazione delle credenziali di accesso in un metodo di connessione breve / veloce sarebbe un enorme risparmio di tempo. Soprattutto perché le mie password sono stringhe criptiche di 64 caratteri.


Ho cancellato i commenti mentre la versione tre di Tammy lo eliminava dal parco in termini di chiarezza e utilità. Molto bene!
bmike

Risposte:


50

È possibile copiare la chiave pubblica sui computer remoti. Finché hanno abilitato l'autenticazione con chiave pubblica e la chiave pubblica è presente sul computer remoto, è possibile accedere ai computer sshsenza dover fornire una password.

Per prima cosa dovrai generare una coppia di chiavi pubblica / privata in questo modo:

ssh-keygen -t rsa

Segui le istruzioni. Quando ti viene chiesto se desideri proteggere la chiave con una passphrase, pronuncia SÌ! È una buona pratica non proteggere con password le chiavi e ti mostrerò come inserire la password solo una volta ogni tanto.

Se hai già una coppia di chiavi, puoi saltare il passaggio sopra.

Ora, supponendo che la tua chiave ssh esista sul tuo Mac come ~/.ssh/id_rsa.pub, puoi installarla su un computer remoto eseguendo:

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Per l'esempio di server specifico sopra citato, il comando sarebbe simile a:

cat ~/.ssh/id_rsa.pub | ssh -p 2200 root@123.456.789.012 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Dovrai inserire la password per root@123.456.789.012eseguire questa copia, ma questa dovrebbe essere l'ultima volta che devi farlo. Supponendo che il server remoto sshdsia configurato per eseguire l'autenticazione con chiave pubblica-privata, quando si invia ssh alla casella ora non dovrebbe chiederti una password per l' rootaccount, ma ti chiederà la password per la tua chiave . Continua a leggere su come rendere questo qualcosa che non è necessario inserire in ogni momento.

Ripeti quanto sopra per ogni macchina su cui desideri accedere con le tue chiavi invece che con una password.

Si prega di notare che chiunque ottenga una sospensione del ~/.ssh/id_rsafile può inviare a questa macchina come rootsenza fornire una password per la macchina remota. La password che protegge il file chiave assicura che dovrebbero aver bisogno di conoscere la password per quella chiave per usarlo. Assicurarsi che il file sia sicuro. Usa la crittografia del disco sul Mac e mantieni ~/.ssh/strette le autorizzazioni per il file e la directory.

Per semplificare l'utilizzo della chiave senza dover inserire la password ogni volta, OS X esegue un ssh-agentprocesso in background sul tuo computer. Questo agente memorizzerà nella cache la coppia di chiavi la prima volta che la usi, quindi dovrai inserire la password solo una volta ogni tanto. Se dormi solo il tuo mac, non riavviarlo mai, puoi passare lunghi periodi di tempo senza dover inserire la password.

È possibile pre-cache tutte le chiavi SSH con il ssh-agenteseguendo:

ssh-add

Ora devi solo ricordare la password della chiave , non le diverse password dell'account. Di solito conservo le mie password chiave in 1Password (nessuna affiliazione), semplificando ulteriormente quante password devo ricordare. Quindi li cerco solo in 1Password e li incollo nel Terminale la volta dispari riavvio il Mac e faccio ripartire la corsa ssh-agent.

Se combini la copia della chiave su macchine remote con la soluzione di gestione della connessione Terminal.app in questa domanda , avrai qualcosa di molto simile a PuTTY per l'esperienza di connessione della GUI.


Sul lato server, verificare /etc/ssh/sshd_confige assicurarsi che:

PubkeyAuthentication yes

è abilitato nella configurazione (è di default in OpenSSH). Potresti anche voler impostare:

PasswordAuthentication no

Mentre sei lì, quindi l'autenticazione basata su password è disabilitata e le chiavi diventano l'unico modo per accedere alla macchina.

È necessario riavviare sshd sul computer se si apportano modifiche al file di configurazione.


Grazie @IamC - questa risposta è fantastica e sono sicuro che funzionerà. Ho creato un account di Exchange pila qui sul canale Mac questa mattina per vedere se riuscivo a trovare un rapido e facile modo per salvare le credenziali di accesso in Terminale o sul Mac in qualche modo. Sembra che farlo sia estremamente complicato e non sia una soluzione praticabile per me. Ecco perché: <more>
tammy

<cont.> Ho accesso alla riga di comando a un numero di server Web (5 in tutto). Ho un PC desktop nel mio ufficio con accesso SSH (tramite PuTTY) a questi server web. Ho un PC portatile di grandi dimensioni nel mio ufficio a casa con accesso SSH (tramite PuTTY) a questi server web. Ho appena acquistato un MacBook Air per viaggi e visite ai clienti in loco. È perfetto per quel particolare bisogno. Speravo di rendere le connessioni SSH ai server facili come lo sono tramite PuTTY e SuperPuTTY sul PC. <more>
tammy,

<cont.> Ma non posso seguire il percorso della chiave di autenticazione pubblica perché avrei bisogno di cambiare il modo in cui PuTTY funziona sul mio PC di casa e dell'ufficio. È diventato un compito troppo scoraggiante per far funzionare il Mac come il mio PC, quindi penso che dovrò semplicemente attenermi al processo di copia e incolla per collegarmi dal mio Mac. Grazie per l'aiuto. Apprezzo molto il tuo aiuto nel cercare di semplificare il mio processo.
tammy,

2
@tammy puoi lasciare PasswordAuthentication yessul lato server e PuTTY continuerà a funzionare come sempre sul tuo computer Windows. Questo non è uno / o uno scenario: è possibile consentire entrambi i tipi di autenticazione sul server. PuTTY supporta anche l'autorizzazione della chiave pubblica / privata come questa FWIW. Puoi copiare i tuoi ~/.ssh/id_rsa*file sul tuo computer Windows e importarli in PuTTY per l'autenticazione sul server. PuTTY, sotto il cofano, usa le stesse librerie OpenSSH per connettersi come sshsu OS X.
Ian C.

1
ssh-addfunziona ancora anche in Sierra (OS X 10.12). Grazie
SaxDaddy,

4

Puoi usare sshpass per salvare la password e non dovrai inserirla ogni volta che non è una buona pratica (problemi di sicurezza).

Seguire le istruzioni per l'installazione di mac os x su: https://gist.github.com/arunoda/7790979

Quando hai installato sshpass, esegui sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no root@123.456.789.012:2200

fai la stessa cosa per i tuoi 5 server web e non dovrai inserire la password ogni volta.


1
Mi sento troppo stupido su questo. Immagino che usare un PC con PuTTY e SuperPuTTY mi abbia allontanato troppo dalla riga di comando di base. Ho modificato il mio OQ con il mio obiettivo generale. Dare un'occhiata.
tammy,

Presumo ora che puoi collegarti a root@123.456.789.012 e voglio solo automatizzare il processo. Fondamentalmente non vuoi scrivere ogni volta ssh -p 2200 root@123.456.789.012e Password: **********************?
enzo,

ssh-copy-idnon fa parte della distribuzione standard di OS X.
Ian C.

@IanC. Penso di aver dimenticato di averlo installato con brew. modificherò la mia risposta
enzo,

Hai capito @maetsoh - è esattamente quello che voglio ottenere qui.
tammy,

1

Oltre alle cose chiave pubblica / privata, il file .ssh / config può essere configurato per facilitare l'uso di comandi ssh, come alias, porta / utente defaut per server, opzioni ssh, comandi proxy ...

Fondamentalmente qualsiasi cosa complicata che puoi mettere in un comando ssh può essere anche in questo file.


0

Ho portato Putty su Mac come bundle di applicazioni native, quindi non ho bisogno di macport o terminali se non sei un utente tecnico.

Maggiori informazioni con le schermate sono disponibili qui: http://www.wine-reviews.net/2016/08/putty-for-mac-os-x-now-available.html

Saluti,


Benvenuti a chiedere diverso! Assicurati di rispondere direttamente alla domanda. Se menziono un prodotto su cui lavori, va bene, ma cerca di essere in tema invece di incollare la stessa macchia di marketing su più post.
bmike
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.