Meu entendimento da maneira como o ~ / .ssh / config funciona é que cada linha 'Host' entra em vigor para qualquer host correspondente após esse ponto no arquivo de configuração.
Eu tenho vários servidores pessoais e servidores de trabalho aos quais preciso me conectar. Estou tentando fazer algo como o seguinte:
# Configurações Gerais ControlMaster auto ControlPath ~/.ssh/controlmaster/%r@%h:% p ForwardAgent sim ForwardX11 sim GSSAPIAuthentication no PubkeyAuthentication yes # Servidores pessoais Hospedeiro * Usuário harleypig Arquivo de identidade ~ / .ssh / personal_id_rsa Anfitrião host1 Nome do host host1.com Host host2 Nome do host host2.com # Servidores de trabalho Hospedeiro * Usuário alan.young Arquivo de identidade ~ / .ssh / work_id_rsa Trabalho do host1 Nome do host work1.companyserver.com Trabalho do host2 Nome do host work2.companyserver.com Hospedeiro * Usuário devuser Host dev1 Nome do host dev1.companyserver.com Host dev2 Nome do host dev2.companyserver.com
Os documentos parecem indicar que host1 e host2 devem usar 'personal_id_rsa' e o usuário harleypig. work1, work2, dev1 e dev2 devem usar 'work_id_rsa' e os dois primeiros devem ser o usuário 'alan.young' e dev1 e dev2 devem ser o usuário 'devuser'
No entanto, isso não está acontecendo. Qualquer que seja o 'Host *' que eu coloquei primeiro, é com o que todos os hosts a seguir tentam se conectar. Estou entendendo mal ou faltando alguma coisa?
Respostas:
Do
ssh_config
manual :Portanto, no seu exemplo, todos os hosts usarão
User harleypig
eIdentityFile ~/.ssh/personal_id_rsa
.Pense nas
Host
diretivas com caracteres curinga como fallbacks: use as seguintes configurações apenas se ainda não tiverem sido definidas. Você precisa escrever algo como isto:Você pode colocar vários padrões em uma
Host
linha se um determinado conjunto de aliases de host não puder corresponder a caracteres curinga, por exemploHost host* more* outlier
.fonte
Você definitivamente está fazendo errado.
Host *
como a última entrada.Host *
entradasSe suas máquinas de trabalho tiverem um formato de nome que você possa generalizar para segmentar apenas as máquinas de trabalho, por exemplo: machine1.work.com, host.work.com, fileserver.work.com, será possível segmentar suas máquinas de trabalho como:
O mesmo se aplica às suas máquinas pessoais.
fonte
Host *
no início do arquivo parece funcionar bem. Talvez o fato de você estar usando um curinga supere o fato de ser a primeira entrada ao priorizá-los?Host *.work.com
é uma sintaxe inválida. Funciona apenas o contrário:Host myserver*
Host *subdomain.com
, não responderá.