Uma chave sem frase secreta depende de que ninguém mais possa acessá-la (que não seria capaz de acessar os recursos aos quais dá acesso). Portanto, se a chave conceder acesso a uma máquina próxima a ela e ambas as máquinas tiverem o mesmo nível de segurança eletrônica e física, não será realmente um grande problema.
Por outro lado, se sua chave estiver em uma máquina com pouca segurança (talvez ela tenha muitos usuários não confiáveis, seja facilmente acessível fisicamente ou não seja mantida atualizada com seu regime de correção), você provavelmente não não quero manter as chaves sem frase-senha lá.
Por fim, depende da confiança em sua configuração e do peso dos riscos / custos de fazê-lo - se você puder ter certeza de que não é realmente mais fácil para um invasor obter acesso à chave do que ao recurso ao qual a chave lhe dá acesso. , então você está bem. Se você não tem essa confiança, provavelmente deve corrigir os motivos pelos quais :)
outra solução, aprimorando a segurança e facilitando para você, para que você não precise digitar sua senha o tempo todo:
se você quiser criptografar sua chave privada, poderá usar
ssh-agent
em sua estação de trabalho para 'armazenar em cache' a chave não criptografada. quando você deseja armazenar sua chave descriptografada, executassh-add ~/.ssh/id_rsa
ou qualquer que seja o nome da sua chave privada. você será solicitado a fornecer a senha e a chave descriptografada estará disponível para suas conexões ssh até que você efetue logout,ssh-agent
interrupção ou desligamento.você pode usar
kill
as chaves armazenadasssh-agent -k
e pode atribuir uma vida útil para a chave estar na memória comssh-agent -t [seconds]
isso, por exemplo; se você não deseja manter sua chave descriptografada para sempre, mas deseja fazer uma grande quantidade de sessões em torno de seus hosts, pode definir o tempo limite para 5 a 10 minutos. para que você não precise inserir continuamente a senha da sua chave.novamente, tudo isso tem a ver com a confiança que você tem com a segurança de sua / estação de trabalho /, que, se você é o único que tem acesso a ela, e possui uma senha local bastante segura, e você não convide explorações e rootkits, a sua chave privada sem senha é razoavelmente segura.
se você é como eu e mantém sua chave privada em um pendrive, você definitivamente vai querer criptografar isso, mesmo que seja apenas uma chave privada (uma chave separada da qual eu uso na minha estação de trabalho, por isso, se eu perco minha chave, posso facilmente remover a chave pública do pen-drive da
~/.ssh/authorized_keys
lista do meu servidor , o que também traz um / excelente / motivo para adicionar comentários ÚTEIS às suas chaves públicas)na sua resposta a uma resposta anterior, você disse que apenas as pessoas em quem você confia têm acesso à máquina com as chaves. Eu só quero esclarecer que sua chave privada NÃO precisa estar no servidor ao qual você está se conectando, caso seja o que você está fazendo. apenas sua chave pública precisa estar no servidor, e isso não é problema, e é por isso que é uma chave 'pública'.
esqueci de mencionar; i lançar
ssh-agent
quando eu começar a X, caso contrário, as chaves de-crypted i loja comssh-add
não são mantidas através de diferentesxterm
sessões, e eu tenho que re-digitar a senha cada vez que eu fechar oxterm
i lançadossh-add
no em minha.~/.xinitrc
arquivo, eu tenho:Eu tenho a chamada para
ssh-agent
encerrareval
porque ssh-agent retorna algumas variáveis de ambiente que precisam ser definidas quando são executadas e executadas a partir de~/.xinitrc
, as variáveis de ambiente são constantes durante toda a sessão X.fonte
ssh-agent
-ssh -A -i privkey user@host
lo, ele permitirá o encaminhamento do agente ssh, o que permitiria acessar um servidor a partir do servidor inicial, sem colocar sua chave privada no primeiro servidor. O encadeamento ssh não é recomendado, mesmo sem o encaminhamento de chave ssh ativado essh -A
possui suas próprias preocupações de segurança. não há motivo para que a chave no servidor não possa ser criptografada, enquanto a chave na estação de trabalho é sem senha.Você pode dar uma olhada em uma pergunta semelhante que eu fiz sobre chaves privadas SSL para servidores da web. Basicamente, existem três opções:
Cada um deles é falho, então tudo depende do que você mais teme.
fonte
Para acesso automatizado, que, como você diz, exige chaves sem senha, sempre utilizo as opções extras de allowed_keys (consulte sshd (8)) para limitar o comando que pode ser executado.
Normalmente, forneço um script cuidadosamente escrito no final remoto, que executa exatamente o trabalho (ou trabalhos - ele pode ver os parâmetros) que eu quero que seja permitido.
Em seguida, eu também a tranco nos endereços IP que podem se conectar com essa chave (não 100% infalível, mas também com a restrição de comando).
fonte
Desde que ninguém além de você tenha acesso à chave, você não precisará de uma senha. De fato, você não pode usar uma senha em chaves usadas por software automatizado.
fonte
Se você deseja usar o ssh para executar qualquer tipo de procedimento automatizado - estou pensando especificamente nas verificações do Nagios -, provavelmente você não gostaria de usar uma senha.
Nessa situação, você provavelmente não usaria isso fora de uma LAN e teria a chave armazenada com segurança no servidor executando o procedimento.
A maioria dos tutoriais que discutem o SSH antecipa uma pessoa que efetua login em uma rede externa, possivelmente em um computador não seguro. Nesse caso, o conselho é bom.
Basicamente, a menos que você saiba que existe um bom motivo para não criar, crie uma senha. Ser muito preguiçoso para digitar sua senha toda vez pode ser uma razão suficientemente boa para você :-)
fonte