Preciso fazer login em vários servidores ssh remotos durante meu trabalho administrativo. Eu trabalho com três computadores diferentes do lado do cliente, todos eles são sistemas Debian GNU/Linux. Eu mantenho um diretório do espaço de trabalho onde coloco tudo o que preciso para fazer meu trabalho, e esse diretório contém, entre outras coisas, um bashrc
arquivo e um ssh_config
arquivo.
Eu sincronizo manualmente o conteúdo desse diretório com um script que usa rsync
de um computador cliente para os outros enquanto movo e começo a usar um cliente diferente.
O usuário local em cada um dos três clientes precisa de configuração mínima, de modo que, se eu precisar criar um novo usuário local ou reinstalar um cliente, tenho apenas que rsync
acessar o espaço de trabalho e adicionar uma referência ao meu custom workspace/bashrc
no arquivo $HOME/.bashrc
. Meu custom workspace/bashrc
cria vários aliases e fico com meu ambiente usual independente do cliente que estou usando.
Meu custom workspace/bashrc
cria aliases para se conectar a servidores remotos desta forma:
alias s1='ssh -F ~/workspace/etc/ssh_config server1.example.com'
e eu entro no server1 apenas digitando s1
em um terminal de qualquer cliente, porque meu costume ssh_config
define as opções de autenticação de chave pública necessárias, a porta correta server1 está escutando e o usuário correto.
Agora isso funciona como um encanto, desde que o ssh
comando seja o que eu preciso. Infelizmente, assim que preciso de outro comando que por sua vez use ssh
, as coisas ficam mais caóticas.
Por exemplo, se eu precisar de rsync
alguma coisa para um desses servidores, sou forçado a escrever todo o comando ssh:
rsync -Pavz --delete -e "ssh -F $HOME/workspace/etc/ssh_config" ...
scp
Coisas semelhantes acontecem com outros comandos , como ssh-copy-id
e outros.
gostaria de poder escrever
rsync -Pavz --delete -e "ssh" ...
em vez disso, e fazer com que o ssh pegue seu nome de arquivo de configuração de uma variável de ambiente, para que eu possa definir essa variável de ambiente em my bashrc
e cada ssh
invocação funciona automaticamente.
Existe tal variável de ambiente ou existe uma solução diferente para o problema?
Isso é um pouco mau uso de todo o conceito e distorcer as ferramentas para o seu caso de uso específico. Você deve usar as ferramentas como elas deveriam ser. Os arquivos de configuração são por padrão em
~/.ssh/config
.Por que não criar um link simbólico de lá para o seu
~/workspace/etc/ssh_config
em todos os três computadores para fazê-lo funcionar imediatamente sem todo esse trabalho?Desde o OpenSSH 7.3, você pode usar
Include
a diretiva para obter o mesmo sem links simbólicos (portanto, você também pode ter configurações diferentes em alguns hosts, se necessário).O mesmo truque pode ser feito com a configuração de todo o sistema em
/etc/ssh/ssh_config
.Como você já fez ... adicione uma referência ao meu bashrc personalizado ... você também pode montar a modificação do
.ssh/config
conjunto em algum script em seu arquivoworkspace
.