Como gerenciar várias sessões ssh com facilidade no Mac OS X

9

No meu próximo trabalho, lidarei com muitos servidores com acesso SSH. Será como ~ 100-120 hosts, com nome de usuário diferente na maioria dos hosts, e tenho certeza de que não me lembrarei de cada nome de domínio de host, sem mencionar qual nome de usuário está em cada host.

Existe uma ferramenta para Mac OS X (preferencialmente Lion) que me permita definir uma sessão para cada host (em uma sessão quero dizer nome de usuário e algumas opções ssh), mostrar a lista dessas sessões e conectar-se ao clicar / selecionar automaticamente?

kars7e
fonte

Respostas:

6

Há duas maneiras de gerenciar ou ter visto pessoas gerenciarem dados SSH:

Bom ícone, linha de comando, texto sem formatação, arquivo ssh_config .

Crie um arquivo chamado configdentro ~/.ssh. Você pode especificar parâmetros globais colocando-os acima de qualquer declaração de host. Quando comecei a usar o MacPorts , tive que definir explicitamente uma chave privada SSH padrão para usar automaticamente na conexão, assim como a primeira linha do arquivo que eu coloquei;

IdentityFile ~/.ssh/id_rsa

Quando você define regras personalizadas para hosts (e pode até usar * como um curinga), é algo parecido com isto:

Host prod-*
  User jason
  Port 2222
  LocalForward 5901 localhost:5901
  IdentityFile ~/.ssh/work-id_rsa

Então, quando corro, ssh prod-scriptpor exemplo, todo o restante das regras é aplicado automaticamente.


Muitas pessoas que não desejam gerenciar manualmente todas as suas coisas de maneira tão complicada encontram rapidamente o JellyfiSSH . ( Link da Mac App Store . As mesmas pessoas também ficaram muito irritadas quando deixaram de ser baixadas gratuitamente.)

O JellyfiSSH fornece à GUI acesso a quase tudo o que pode ser especificado na linha de comando ou no arquivo ssh_config. O JellyfiSSH é apenas um aplicativo de armazenamento de configuração para fins de organização, porque gera os comandos com base nas opções definidas e, ao clicar em conectar, abre uma nova janela do terminal com todas as opções definidas na linha de comando. O JellyfiSSH não é um aplicativo de terminal por si só.

Jason Salaz
fonte
JellyfiSSH parece aplicativo que eu estava procurando. Obrigado!
kars7e
FYI: man ssh_configdo Terminal fornecerá informações dos arquivos de configuração do cliente OpenSSH SSH, conforme disponíveis na instalação atual do sistema. Que, no momento do comentário, é mais recente que o link do desenvolvedor acima.
precisa saber é
5

Você pode criar arquivos como Example.commandexecutáveis: chmod 755 Example.commande clicar duas vezes no arquivo para abrir uma conexão:

#!/bin/sh

exec /usr/bin/ssh [email protected]

exit 0

Se você quiser conectar-se a partir da linha de comando usando um alias (palavra fácil de lembrar), defina-os em ~ / .ssh / config

Host foo
HostName some.really.long.hostname.here.com
Port 22
User bigfun

Então você pode se conectar usando o host foo

ssh foo

Ou você pode simplesmente criar funções no seu arquivo de configuração do shell (~ / .bashrc ou ~ / .zshenv):

s1 () {
    ssh -v [email protected]
}

então você pode conectar-se example.comapenas digitando s1na linha de comando e ela usará o nível 1 de verbosidade.

Por fim, você pode usar o preenchimento automático ssh, mas a sintaxe dependerá do seu shell de escolha. Um rápido google para 'ssh autocomplete YourShellHere' deve aparecer alguns exemplos.

Use uma senha e o chaveiro do OS X

O mais importante, IMO, é configurar o ssh para funcionar com uma senha. O OS X possui uma excelente integração de chaveiros desde o Leopard.

ssh-keygen -t dsa -f ~/.ssh/id_dsa -C "[email protected]"

cat ~/.ssh/id_dsa.pub | ssh [email protected] 'cat – >> ~/.ssh/authorized_keys'

(Fonte: http://www.paosborne.com/blog/?p=369 .)

Então, quando você transfere ssh para uma nova máquina, o chaveiro do OS X solicitará sua senha ssh

Consulte também http://www.dribin.org/dave/blog/archives/2007/11/28/ssh_agent_leopard/ para obter uma descrição mais completa. O artigo é mais antigo, mas o Lion funciona da mesma maneira.

Não se esqueça do Dropbox

Se você fizer login em várias máquinas, poderá sincronizar seu ~/.ssh/configarquivo via Dropbox. Eu mantenho o meu ~/Dropbox/etc/ssh/config.txte depois faço:

cd ~/.ssh
ln -s ../Dropbox/etc/ssh/config.txt config

Eu faço o mesmo que com o meu ~ / .zshenv:

cd
ln -s Dropbox/etc/zshenv.sh .zshenv

De fato, coloquei todos os meus scripts de shell em ~ / Dropbox / bin / e adicionei isso ao meu $ PATH também, apenas para cobrir todas as minhas bases.

TJ Luoma
fonte
O Dropbox é um ótimo local para armazenar scripts de shell que não quero gerenciar no git / no GitHub. Obrigado por provocar esse momento 'aha', TJ!
precisa
-2

Você pode experimentar o aplicativo vSSH para Mac OS X ( baseado em PuTTY ).

  • Gerenciar lista de conexões (host, porta, nome de usuário, senha, chaves e muitas outras configurações)
  • Pode quase tudo o que PuTTY pode
  • Interface de várias janelas e várias guias
  • Suporte para macros (você shell scripts como itens de menu para acesso rápido)
  • Sincronização do iCloud (conexões, macros e chaves) com aplicativos de controle vSSH e SSH para iOS

Disponível na Mac AppStore .

Quem sou eu
fonte
Bem-vindo ao perguntar diferente! Leia o centro de ajuda sobre autopromoção e inclua um aviso se for o autor do produto em sua resposta.
grg
11
Como isso realmente permite uma lista clicável de sessões? Se você puder editar parte do marketing genérico e focalizar isso na pergunta exata em questão, provavelmente obterá uma reação melhor.
bmike