Pergunta

Eu tenho uma chave privada protegida com uma senha para acessar um servidor via SSH.

Eu tenho 2 máquinas Linux (Ubuntu 10.04) e o comportamento do comando ssh-add é diferente em ambos.

Em uma máquina, depois de usar "ssh-add .ssh/identidade" e digitei minha senha, a chave foi adicionada permanentemente, ou seja, toda vez que desliguei o computador e login novamente, a chave já é adicionada.

No outro, tenho que adicionar a chave toda vez que faço login.

Até onde me lembro, fiz a mesma coisa em ambos. A única diferença é que a chave foi criada na que é adicionada permanentemente.

Alguém sabe como adicioná -lo permanentemente à outra máquina também?

Foi útil?

Solução

Uma solução seria forçar os arquivos -chave a serem mantidos permanentemente, adicionando -os em seu ~/.ssh/config Arquivo:

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

Se você não possui um arquivo 'config' no diretório ~/.ssh, deve criar um. Não precisa de direitos radiculares, então simplesmente:

nano ~/.ssh/config

... e insira as linhas acima de acordo com seus requisitos.

Para que isso funcione, o arquivo precisa ter CHMOD 600. Você pode usar o comando chmod 600 ~/.ssh/config.

Se você deseja que todos os usuários no computador usem a chave, coloque essas linhas /etc/ssh/ssh_config e a chave em uma pasta acessível a todos.

Além disso, se você deseja definir a chave específica para um host, poderá fazer o seguinte no seu ~/.ssh/config:

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

Isso tem a vantagem quando você tem muitas identidades que um servidor não o rejeita porque você experimentou as identidades erradas primeiro. Somente a identidade específica será tentada.

Outras dicas

Isso não respondeu o mesmo problema para mim sob o Mac OS X Lion. Acabei acrescentando:

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

Para o meu .zshrc (mas .Profile também ficaria bem), o que parece ter corrigido.

(Conforme sugerido aqui: http://geek.michaelgrace.org/2011/09/permanly-add-sh-key-sh-add/ )

Eu resolvi esse problema no Mac OSX (10.10) usando -k opção para ssh -add:

ssh-add -K ~/.ssh/your_private_key

Para o MacOS 10.12 e mais tarde você precisa editar adicionalmente sua configuração SSH, conforme descrito aqui: https://github.com/jirsbek/ssh-keys-in-macos-sierra-keychain

Basta adicionar o chaveiro, conforme mencionado no Ubuntu Dicas Rápidashttps://help.ubuntu.com/community/quicktips

o que

Em vez de iniciar constantemente o SSH-Agent e o SSH-ADD, é possível usar o chaveiro para gerenciar suas teclas SSH. Para instalar o Keychain, você pode clicar aqui ou usar o Synaptic para fazer o trabalho ou o APT-Get da linha de comando.

Linha de comando

Outra maneira de instalar o arquivo é abrir o terminal (aplicação-> acessórios-> terminal) e digite:

sudo apt-get install keychain

Editar arquivo

Você deve adicionar as seguintes linhas ao seu $ {home}/. Bashrc ou /etc/bash.bashrc:

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

Eu experimentei a solução de @Aaron e não funcionou muito para mim, porque isso re-adquiria minhas chaves toda vez que abri uma nova guia no meu terminal. Então, eu modifiquei um pouco (observe que a maioria das minhas chaves também é protegida por senha, então não posso simplesmente enviar a saída para /dev /null):

added_keys=`ssh-add -l`

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

O que isso faz é que ele verifica a saída de ssh-add -l(que lista todas as chaves que foram adicionadas) para uma chave específica e, se não a encontrar, então adiciona com ssh-add.

Agora, na primeira vez em que abro meu terminal, pedi as senhas para minhas chaves particulares e não me perguntam novamente até que eu reinicie (ou logout - não verifiquei) meu computador.

Já que tenho várias chaves, guardo a saída de ssh-add -l em uma variável para melhorar o desempenho (pelo menos acho que melhora o desempenho :))

PS: Estou no Linux e este código foi para o meu ~/.bashrc Arquivo - Se você estiver no Mac OS X, presumo que você deve adicioná -lo a .zshrc ou .profile

Editar: como apontado por @Aaron nos comentários, o .zshrc O arquivo é usado do zsh Shell - então, se você não está usando isso (se você não tem certeza, provavelmente está usando bash em vez disso), este código deve ir para o seu .bashrc Arquivo.

No meu caso, a solução foi:

As permissões no arquivo de configuração devem ser 600. chmod 600 config

Conforme mencionado nos comentários acima por GeneralOpinion

Não há necessidade de tocar o conteúdo do arquivo de configuração.

Eu tive o mesmo problema no Ubuntu 16.04: algumas chaves foram adicionadas permanentemente, para outras que eu tive que executar ssh-add em cada sessão. Eu descobri que as chaves que foram adicionadas permanentemente tinham chave pública e privada localizada em ~/.ssh e as chaves esquecidas em todas as sessões tinham apenas chaves particulares em ~/.ssh dir. Portanto, a solução é simples: você deve copiar Ambas Chave privado e público para ~/.ssh antes de executar ssh-add.

No Ubuntu 14.04 (talvez antes, talvez ainda), você nem precisa do console:

  • começar seahorse Ou inicie aquela coisa que você encontra pesquisando por "chave"
  • Crie uma chave SSH lá (ou importe um)
    • Não há necessidade de deixar a senha vazia
    • É oferecido a você para pressionar a chave pública para um servidor (ou mais)
  • Você acabará com uma corrida ssh-agente e essa chave carregada, mas bloqueada
  • usando ssh Voltará a identidade (isto é, a chave) através do agente
  • No primeiro uso durante a sessão, a senha será verificada
    • E você tem a opção de desbloquear automaticamente a chave no login
    • Isso significa que a autenticação de login será usada para embrulhar a senha da chave
  • Nota: Se você deseja encaminhar sua identidade (ou seja, agente para a frente), invoce seu ssh com -A ou faça disso o padrão
    • Caso contrário, você não pode se autenticar com essa chave Em uma máquina que você faz login posteriormente para uma terceira máquina

Eu executo o Ubuntu usando duas itens ID_RSA. (um pessoal para o trabalho). O SSH-ADD se lembraria de uma chave (pessoal) e esqueceria a empresa uma sempre.

Verificando a diferença entre os dois que vi que minha chave pessoal tinha 400 direitos enquanto a empresa um tinha 600 direitos. (tinha u+w). Removendo o usuário Escreva diretamente da chave da empresa (UW ou definido como 400) corrigiu meu problema. O SSH-ADD agora se lembra de ambas as chaves.

Adicionar as seguintes linhas em "~/.bashrc" resolveu o problema para mim. Estou usando o 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)"

muito simples ^ _ ^ duas etapas

1.YUM Instale o chaveiro

2.Add Código abaixo para .bash_profile

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

Isso funcionou para mim.

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

Para aqueles que usam a concha de peixe, você pode usar a seguinte função e chamá -la em ~/.config/peixe/config.fish. Ele carregará todas as chaves que começam com id_rsa no 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 você quiser ter o ssh-agent O automóvel começou quando você abre um terminal que você pode usar TuvistaVie/Fish-SSH-Agent para fazer isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top