Como adicionar permanentemente uma chave privada com SSH-ADD no Ubuntu? [fechado
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?
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.