Você pode fazer isso executando um único comando SSH, mas é difícil gerenciar a combinação adequada de transferência de dados, execução de comandos e lógica de controle.
É mais fácil estabelecer uma conexão SSH, fazer o seu trabalho com qualquer combinação de ssh
, scp
, sftp
, rsync
, sshfs
,… combina com você e, por fim, fechar a conexão SSH. / p>
O SSH oferece uma conexão com a qual outros processos SSH podem se conectar: uma conexão mestre. Inicie uma conexão principal e mantenha-a em execução:
ssh -N -M
Passe as credenciais como entrada com expectativa, desde que você precise fornecer uma senha. Em seguida, execute outros comandos SSH conforme desejar. Quando você não precisar mais da conexão, execute ssh -O exit
.
Para garantir que os comandos SSH sejam escravos da conexão mestre existente (e, portanto, não exijam autenticação), passe a mesma opção ControlPath
para todas as chamadas SSH. Passe-a como uma opção de linha de comando ( -o ControlPath=…
, note minúsculas) ou defina-a em ~/.ssh/config
. O valor é um caminho onde o ssh irá criar ou procurar o socket que permite que os escravos e o mestre se comuniquem; ele precisa estar em um diretório gravável em um sistema de arquivos que suporte soquetes nomeados e o nome precisa ser exclusivo para cada conexão (portanto, deve incluir o host, a porta e o usuário de destino).
Veja também Usando um canal SSH já estabelecido e SSH copia facilmente o arquivo para o sistema local