tornando os hosts ssh globais para todos os usuários no computador

15

Portanto, o SSH possui esses arquivos que definem configurações para um usuário específico.

~/.ssh/authorized_keys
~/.ssh/config
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
~/.ssh/known_hosts

Eu gostaria de globalizar alguns desses arquivos, como confige known_hosts. Para que outros usuários (incluindo raiz ) possam compartilhar os hosts configurados.

Qual seria a melhor forma de fazer isso?

Stefan
fonte

Respostas:

21

Pois ~/.ssh/configvocê pode colocar configurações relevantes em todo o sistema em / etc / ssh / ssh_config de acordo com a página de manual :

O ssh (1) obtém dados de configuração das seguintes fontes na seguinte ordem:

  1. opções de linha de comando
  2. arquivo de configuração do usuário (~ / .ssh / config)
  3. arquivo de configuração em todo o sistema (/ etc / ssh / ssh_config)

Para cada parâmetro, o primeiro valor obtido será usado. Os arquivos de configuração contêm seções separadas pelas especificações de "Host", e essa seção é aplicada apenas aos hosts que correspondem a um dos padrões fornecidos na especificação.

Observe que somente o primeiro valor será usado, o que significa que o usuário sempre pode substituir as opções de configuração em todo o sistema localmente.

Para ~/.ssh/known_hostsvocê poder usar /etc/ssh/ssh_known_hostsou outro arquivo especificado pela opção de configuração GlobalKnownHostsFile:

GlobalKnownHostsFile

Especifica um arquivo a ser usado para o banco de dados de chaves do host global em vez de / etc / ssh / ssh_known_hosts.

Não tenho certeza se é possível para os outros arquivos, mas imagino que você poderia trabalhar com links simbólicos se realmente quisesse compartilhar chaves privadas entre os usuários.

Steven D
fonte
1
Você tem um erro de digitação na sua cotação GlobalKnownHostsFile.
Cjm 30/10/10
1
Você pode definir UserKnownHostsFile = / dev / null ssh nunca encontrará uma chave válida dentro do arquivo known_hosts dos usuários, mas ainda assim o usuário pode aceitar um temporário.
Janning
1
@ Janning, parece que há realmente uma IgnoreUserKnownHostsopção para isso (valores yesou no).
kael
Observe que o /etc/ssh/ssh_known_hostsarquivo global deve ser legível pelo mundo. Eu estava usando ssh-keygen -Hf /etc/ssh/ssh_known_hostspara refazer a tarefa após adicionar manualmente entradas e parece que ele estava sendo definido como somente proprietário.
kael
1

Como o root é todo poderoso, eu usaria um trabalho cron do root para copiar os arquivos de outros usuários. Hosts conhecidos e chaves autorizadas podem simplesmente ser anexados. Se tudo estiver em uma partição, existe a opção de hardlink. Não tenho certeza se os links simbólicos funcionariam para os arquivos, mas você também pode tentar isso, basta colocá-los em um local compartilhado e seguro.

xenoterracida
fonte
2
Impediria que os usuários adicionassem seus próprios hosts, o que IMHO é efeito não intencional.
Maciej Piechotka
Eu esqueço se um arquivo de hardlink tem que ter as mesmas permissões, mas suspeito que sim. No entanto, você pode copiar o arquivo com o cron e, em seguida, verifique se as permissões estão corretas.
xenoterracide