Eu preciso entrar 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 arquivo bashrc
e um arquivo ssh_config
.
Eu sincronizo manualmente o conteúdo do diretório com um script que usa rsync
de um computador cliente para os outros conforme eu me 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, para que, se eu precisar criar um novo usuário local ou reinstalar um cliente, eu tenha apenas rsync
do espaço de trabalho e adicionar uma referência ao meu% personalizadoworkspace/bashrc
no usuário real $HOME/.bashrc
. Meu personalizado workspace/bashrc
cria vários aliases e eu recebo meu ambiente normal, independentemente do cliente que estou usando.
Meu personalizado workspace/bashrc
cria aliases para se conectar a servidores remotos dessa maneira:
alias s1='ssh -F ~/workspace/etc/ssh_config server1.example.com'
e faço login no server1 apenas digitando s1
em um terminal de qualquer cliente, porque meu ssh_config
personalizado define as opções de autenticação de chave pública necessárias, o servidor de porta correto1 está escutando e o usuário correto.
Agora isso funciona como um encanto, desde que o comando ssh
seja o que eu preciso. Infelizmente, assim que eu precisar de outro comando que, por sua vez, use ssh
, as coisas se tornarão mais caóticas.
Por exemplo se precisar rsync
de qualquer coisa para um desses servidores, sou forçado a escrever o comando ssh inteiro:
rsync -Pavz --delete -e "ssh -F $HOME/workspace/etc/ssh_config" ...
Coisas semelhantes acontecem com outros comandos, como scp
, ssh-copy-id
e outros.
Eu gostaria de poder escrever
rsync -Pavz --delete -e "ssh" ...
em vez disso, e ter ssh pegando seu nome de arquivo de configuração de uma variável de ambiente, para que eu possa definir essa variável de ambiente na minha bashrc
e cada ssh
invocação funciona automaticamente.
Existe essa variável de ambiente ou existe uma solução diferente para o problema?