Como armazenar credenciais SSH no terminal

33

Eu sou novo no MacBook e estou executando o El Capitan.

Estou migrando o uso da minha máquina de um PC para um MacBook. Eu sou usuário de longa data do PuTTY e SuperPuTTY em um PC.

Quero criar e salvar credenciais de login nos meus servidores da Web no MacBook Terminal, como fiz no SuperPuTTY no PC.

É possível salvar credenciais de login do servidor Web no Mac Terminal?

Aqui está o meu objetivo geral:

Gostaria de saber se existe uma maneira fácil no Mac Terminal de armazenar as seguintes credenciais de login da linha de comando e, em seguida, usar algum tipo de código de acesso para conectar-se ao meu servidor da Web através do Terminal:

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

Eu gerencio e conecto 5 servidores da Web diferentes, portanto, separar e organizar as credenciais de login em um método de conexão curta / rápida economizaria muito tempo. Especialmente porque minhas senhas são seqüências de 64 caracteres enigmáticas.

tammy
fonte
Eu purgei os comentários quando a versão de edição de Tammy três tirou isso do parque em termos de clareza e utilidade. Bem feito!
bmike

Respostas:

50

Você pode copiar sua chave pública para as máquinas remotas. Contanto que eles tenham a autenticação de chave pública ativada e sua chave pública esteja presente na máquina remota, você poderá sshacessar as máquinas sem precisar fornecer uma senha.

Primeiro, você precisará gerar um par de chaves público / privado, da seguinte forma:

ssh-keygen -t rsa

Siga as instruções. Quando perguntar se você deseja proteger a chave com uma senha, diga SIM! É uma prática recomendada não proteger suas chaves com senha e mostrarei como é necessário digitar a senha de vez em quando.

Se você já possui um par de chaves, pode pular a etapa acima.

Agora, supondo que sua chave ssh exista no seu Mac ~/.ssh/id_rsa.pub, você pode instalá-la em uma máquina remota executando:

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

Para o seu exemplo de servidor específico citado acima, o comando seria semelhante a:

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

Você precisará digitar a senha para [email protected]executar esta cópia, mas essa deve ser a última vez que você precisará fazer isso. Supondo que o servidor remoto sshdesteja configurado para fazer autenticação de chave pública-privada, quando você acessa a caixa agora, ele não deve solicitar uma senha para a rootconta - em vez disso, solicita a senha da sua chave . Leia sobre como fazer disso algo que você não precisa inserir o tempo todo.

Repita o procedimento acima para todas as máquinas nas quais você deseja conectar com as chaves em vez de com a senha.

Observe que qualquer pessoa que obtenha o ~/.ssh/id_rsaarquivo em espera pode enviar ssh para esta máquina rootsem fornecer uma senha para a máquina remota. A senha que protege o arquivo de chave garante que eles precisem saber a senha dessa chave para usá-lo. Verifique se o arquivo está seguro. Use a criptografia de disco no seu Mac e mantenha as permissões no arquivo e no ~/.ssh/diretório.

Para facilitar o uso da chave sem precisar digitar a senha todas as vezes, o OS X executa um ssh-agentprocesso em segundo plano na sua máquina. Esse agente armazenará em cache o par de chaves na primeira vez em que você o usar, para que você precise digitar sua senha de vez em quando. Se você dorme apenas o seu mac, nunca o reinicia, você pode passar longos períodos sem precisar digitar sua senha.

Você pode pré-armazenar em cache todas as suas chaves SSH ssh-agentexecutando o seguinte:

ssh-add

Agora você só precisa se lembrar da senha da chave , não das muitas senhas de conta diferentes. Normalmente, mantenho minhas senhas principais no 1Password (sem afiliação), simplificando ainda mais quantas senhas eu preciso lembrar. Depois, eu os pesquiso no 1Password e os recordo e colo no Terminal na hora ímpar em que reinicio o Mac e faço com que minha execução ssh-agentseja reiniciada.

Se você combinar copiar sua chave para máquinas remotas com a solução de gerenciamento de conexão Terminal.app nesta pergunta , terá algo muito próximo da experiência de conexão PuTTY para GUI.


No lado do servidor, verifique /etc/ssh/sshd_confige verifique se:

PubkeyAuthentication yes

está ativado na configuração (por padrão no OpenSSH). Você também pode definir:

PasswordAuthentication no

Enquanto você está lá, a autenticação baseada em senha é desativada e as chaves se tornam a única maneira de acessar a máquina.

Você precisará reiniciar o sshd na máquina se fizer alguma alteração no arquivo de configuração.

Ian C.
fonte
Obrigado @IamC - esta resposta é ótima e tenho certeza que funcionará. Criei uma conta de troca de pilhas aqui no Mac Channel esta manhã para ver se consegui encontrar uma maneira rápida e fácil de salvar credenciais de login no Terminal ou no Mac de alguma forma. Parece que isso é extremamente complicado e não é uma solução viável para mim. Aqui está o porquê: <more>
tammy
<cont.> Tenho acesso por linha de comando a vários servidores web (5 no total). Eu tenho um PC de mesa no meu escritório de trabalho com acesso SSH (via PuTTY) a esses servidores da web. Eu tenho um laptop grande no meu escritório em casa com acesso SSH (via PuTTY) a esses servidores da web. Acabei de comprar um MacBook Air para viagens e visitas a clientes no local. É perfeito para essa necessidade específica. Eu esperava fazer conexões SSH com os servidores tão fáceis quanto através do PuTTY e SuperPuTTY no PC. <more>
tammy
<cont.> Mas não posso seguir a rota da chave de autenticação pública porque precisaria alterar a maneira como o PuTTY funciona nos PCs de casa e do escritório. Tornou-se uma tarefa assustadora demais para fazer o Mac funcionar como o meu PC, então acho que vou ter que ficar com o processo de copiar e colar para conectar no meu Mac. Obrigado pela ajuda. Agradeço imensamente por me ajudar a tentar simplificar meu processo.
Tammy
2
@tammy você pode deixar PasswordAuthentication yesno lado do servidor e o PuTTY continuará funcionando como sempre em sua máquina Windows. Este não é um cenário de / ou - você pode permitir os dois tipos de autenticação no servidor. O PuTTY também suporta autorização de chave pública / privada como este FWIW. Você pode copiar seus ~/.ssh/id_rsa*arquivos para sua máquina Windows e importá-los para o PuTTY para autenticação no servidor. PuTTY, sob o capô, usa exatamente as mesmas bibliotecas OpenSSH se conectar como sshno OS X.
Ian C.
1
ssh-addainda funciona mesmo no Sierra (OS X 10.12). Obrigado
SaxDaddy 26/09/16
4

Você pode usar o sshpass para salvar a senha e não precisará inserir todas as vezes, o que não é uma boa prática (problemas de segurança).

Siga as instruções para instalação do mac os x em: https://gist.github.com/arunoda/7790979

Quando você tiver o sshpass instalado, execute sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no [email protected]:2200

faça o mesmo com seus 5 servidores da web e você não precisará inserir a senha todas as vezes.

enzo
fonte
1
Eu me sinto muito burro com este. Eu acho que usar um PC com PuTTY e SuperPuTTY apenas me distanciou muito da linha de comando base. Editei meu OQ com meu objetivo geral. Dar uma olhada.
Tammy
Estou assumindo agora que você pode se conectar ao [email protected] e apenas deseja automatizar o processo. Você basicamente não quer digitar cada vez ssh -p 2200 [email protected]e Password: **********************?
enzo
ssh-copy-idnão faz parte da distribuição padrão do OS X.
Ian C.
@IanC. Acho que esqueci que o instalei com o brew. modificará minha resposta
enzo
Você entendeu @maetsoh - é exatamente o que eu quero alcançar aqui.
Tammy
1

Além do material da chave pública / privada, o arquivo .ssh / config pode ser configurado para facilitar o uso de comandos ssh, como aliases, defaut usuário / porta por servidor, opções ssh, comandos proxy ...

Basicamente, qualquer coisa complicada que você possa colocar em um comando ssh também pode estar nesse arquivo.

user2189998
fonte
0

Eu levei o Putty para o Mac como um pacote de aplicativos nativo, portanto não há necessidade de macports ou terminais se você não for um usuário técnico.

Mais informações com capturas de tela estão aqui: http://www.wine-reviews.net/2016/08/putty-for-mac-os-x-now-available.html

Felicidades,

twickline
fonte
Bem-vindo ao perguntar diferente! Certifique-se de responder a pergunta diretamente. Se você mencionar um produto em que trabalha, tudo bem, mas tente abordar o assunto em vez de colar o mesmo anúncio de marketing em várias postagens.
bmike