Domanda

Ho una chiave privata protetta da password per accedere a un server tramite SSH.

Ho 2 macchine Linux (ubuntu 10.04) e il comportamento del comando ssh-add è diverso in entrambe.

In una macchina, una volta utilizzato "ssh-add .ssh/identity" e inserita la password, la chiave è stata aggiunta in modo permanente, ovvero ogni volta che spengo il computer e accedo di nuovo, la chiave è già aggiunta.

Nell'altro, devo aggiungere la chiave ogni volta che accedo.

Per quanto ricordo, ho fatto la stessa cosa su entrambi.L'unica differenza è che la chiave è stata creata su quella aggiunta in modo permanente.

Qualcuno sa come aggiungerlo in modo permanente anche all'altra macchina?

È stato utile?

Soluzione

Una soluzione potrebbe essere quella di costringere i file di chiave per essere mantenuto in modo permanente, aggiungendoli nel file ~/.ssh/config:

IdentityFile ~/.ssh/gitHubKey
IdentityFile ~/.ssh/id_rsa_buhlServer

Se non si dispone di un file 'config' nella directory ~ / .ssh, allora si dovrebbe creare uno. Non ha bisogno di privilegi di root, così semplicemente:

nano ~/.ssh/config

... e inserite le linee sopra secondo le vostre esigenze.

Per far funzionare tutto questo le esigenze di file per avere chmod 600. È possibile utilizzare il comando chmod 600 ~/.ssh/config.

Se si desidera che tutti gli utenti del computer per utilizzare il tasto messo queste linee in /etc/ssh/ssh_config e la chiave in una cartella accessibile a tutti.

Inoltre, se si desidera impostare la specifica chiave per un host, è possibile effettuare le seguenti operazioni nel file ~ / .ssh / config:

Host github.com
    User git
    IdentityFile ~/.ssh/githubKey

Questo ha il vantaggio quando si hanno molte identità che un server non ti rifiutano perché si è tentato le identità sbagliate prima. sarà processato solo l'identità specifica.

Altri suggerimenti

Questo non ha risposto lo stesso problema per me in Mac OS X Lion. Ho finito di aggiungere:

ssh-add ~/.ssh/id_rsa &>/dev/null

Per la mia .zshrc (ma .profile andrebbe bene ugualmente), che sembra aver risolto.

(come suggerito qui: http://geek.michaelgrace.org / 2011/09 / in modo permanente-add-ssh-key-ssh-add / )

I risolto il problema su Mac OSX (10.10) utilizzando l'opzione -K per ssh-add:

ssh-add -K ~/.ssh/your_private_key

per MacOS 10.12 e successivamente è necessario modificare ulteriormente la vostra configurazione ssh come descritto qui: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain

Basta aggiungere il portachiavi, come riferimento in Ubuntu Suggerimenti rapidi https://help.ubuntu.com/community/QuickTips

Cosa

Invece di costantemente messa in ssh-agent e ssh-add, è possibile usare portachiavi per gestire le chiavi SSH. Per installare portachiavi, si può semplicemente cliccare qui, o utilizzare Synaptic per fare il lavoro o apt-get dalla riga di comando.

Riga di comando

Un altro modo per installare il file è quello di aprire il terminale (Application-> Accessori-> Terminale) e digitare:

sudo apt-get install keychain

Modifica File

A questo punto dovrebbe aggiungere le seguenti righe al $ {HOME} / bashrc o /etc/bash.bashrc:.

keychain id_rsa id_dsa
. ~/.keychain/`uname -n`-sh

Ho provato @ soluzione di Aaron e non ha abbastanza lavoro per me, perché sarebbe aggiungere nuovamente le chiavi ogni volta che ho aperto una nuova scheda in mio terminale. Così ho modificato un po '(nota che la maggior parte delle mie chiavi sono anche protetti da password in modo da non posso semplicemente inviare l'output a / dev / null):

added_keys=`ssh-add -l`

if [ ! $(echo $added_keys | grep -o -e my_key) ]; then
    ssh-add "$HOME/.ssh/my_key"
fi

Quello che fa è che controlla l'output di ssh-add -l (che elenca tutti i tasti che sono stati aggiunti) per una chiave specifica e se non lo trova, poi aggiunge con ssh-add.

Ora la prima volta che apro il mio terminale mi chiedono per le password per le chiavi private e non sto chiesto di nuovo fino a quando ho riavvio (o di logout - non ho controllato). Il mio computer

Dato che ho un mazzo di chiavi che memorizzare l'output di ssh-add -l in una variabile per migliorare le prestazioni (almeno immagino che migliora le prestazioni :))

PS: io sono su Linux e questo codice andato al mio file ~/.bashrc - se siete su Mac OS X, quindi presumo si dovrebbe aggiungere alla .zshrc o .profile

EDIT: Come sottolineato da @Aaron nei commenti, il file .zshrc viene utilizzato dal guscio zsh - quindi se non si sta usando che (se non siete sicuri, quindi molto probabilmente, si sta utilizzando bash invece), questo codice dovrebbe andare al file .bashrc.

Nel mio caso la soluzione è stata:

  

Le autorizzazioni per il file di configurazione dovrebbe essere 600. chmod 600 config

Come accennato nei commenti di cui sopra da parte  generalopinion

Non c'è bisogno di toccare il contenuto del file di configurazione.

Ho avuto lo stesso problema su Ubuntu 16.04: alcuni tasti sono stati aggiunti in modo permanente, per gli altri ho dovuto eseguire ssh-add su ogni sessione. Ho scoperto che le chiavi che sono stati aggiunti in modo permanente avuto sia la chiave privata e pubblica si trova nella ~/.ssh e le chiavi che sono stati dimenticati su ogni sessione aveva solo le chiavi private in ~/.ssh dir. Quindi la soluzione è semplice:. È necessario copiare sia chiave privata e pubblica per ~/.ssh prima di eseguire ssh-add

Su Ubuntu 14.04 (forse prima, forse ancora) non hai nemmeno bisogno della console:

  • inizio seahorse oppure avvia quella cosa che trovi cercando "chiave"
  • crea lì una chiave SSH (o importane una)
    • non è necessario lasciare vuota la passphrase
    • ti viene offerto anche di inviare la chiave pubblica a un server (o più)
  • ti ritroverai con un ssh-agent in esecuzione e questa chiave caricata, ma bloccata
  • utilizzando ssh rileverà l'identità (cioèchiave) tramite l'agente
  • al primo utilizzo durante la sessione verrà verificata la passphrase
    • e hai la possibilità di sbloccare automaticamente la chiave al momento dell'accesso
    • ciò significa che l'autenticazione di accesso verrà utilizzata per racchiudere la passphrase della chiave
  • Nota:se desideri inoltrare la tua identità (ad es.agent-forwarding) invoca il tuo ssh con -A o impostarlo come predefinito
    • altrimenti non puoi autenticarti con quella chiave su una macchina a cui accedi successivamente su una terza macchina

corro Ubuntu utilizzando due id_rsa chiave. (Uno uno personale per il lavoro). ssh-add avrebbe ricordato un tasto (uno personale) e dimenticare l'azienda uno ogni volta.

Verifica la differenza tra i due ho visto la mia chiave personale aveva 400 diritti, mentre la società aveva 600 diritti. (Avuto u + w). Rimozione del diritto utente scrittura dalla chiave aziendale (u-w o set a 400) risolto il mio problema. ssh-add ora ricorda i due tasti.

aggiungendo le seguenti righe in "~ / .bashrc" risolto il problema per me. Sto utilizzando Ubuntu 14.04 desktop.

eval `gnome-keyring-daemon --start`
USERNAME="reynold"
export SSH_AUTH_SOCK="$(ls /run/user/$(id -u $USERNAME)/keyring*/ssh|head -1)"
export SSH_AGENT_PID="$(pgrep gnome-keyring)"

molto semplice ^ _ ^ due passi

1.yum installare portachiavi

2.Add codice sottostante per .bash_profile

/usr/bin/keychain $HOME/.ssh/id_dsa
source $HOME/.keychain/$HOSTNAME-sh

Questo ha funzionato per me.

ssh-agent /bin/sh
ssh-add /path/to/your/key

Per coloro che utilizzano crostacei è possibile utilizzare la seguente funzione quindi chiamare in ~ / .config / pesce / config.fish. Si caricherà tutte le chiavi che iniziano con id_rsa nella ssh-agent.

# Load all ssh keys that start with "id_rsa"
function loadsshkeys
  set added_keys (ssh-add -l)
   for key in (find ~/.ssh/ -not -name "*.pub" -a -iname "id_rsa*")
    if test ! (echo $added_keys | grep -o -e $key)
      ssh-add "$key"
    end
  end
end

# Call the function to run it.
loadsshkeys

Se si desidera avere l'auto ssh-agent iniziato quando si apre un terminale è possibile utilizzare tuvistavie / pesce-ssh-agent per fare questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top