No meu ~/.ssh/config
, eu uso ControlMaster
para reutilizar conexões SSH. O Ruby pode Net::SSH
fazer uso de ControlMaster
ou pelo menos fazer uso de um mecanismo de reutilização de conexão semelhante?
Eu reutilizo conexões SSH host.example.com
porque estabelecer uma conexão com ele requer MFA, o que se torna um problema quando tenho dias que exigem que eu revisite host.example.com
com frequência. Mas isso parece funcionar apenas quando executo ssh
como um comando shell. Gostaria que um projeto Ruby no qual trabalho fornecesse a mesma funcionalidade.
O projeto Ruby atualmente tem o seguinte código:
Net::SSH.start("host.example.com") do |session|
# ...
end
Se você estiver usando um único processo, poderá armazenar a conexão e reutilizá-la (talvez você queira dar uma olhada no pool de conexões sshkit)
Se você quiser reutilizar a mesma conexão em vários processos Ruby, é mais complexo porque o ControlMaster não é suportado: https://net-ssh.github.io/net-ssh/classes/Net/SSH/Config.html .
Você provavelmente consegue usar o cliente ssh do sistema com um comando proxy: https://net-ssh.github.io/ssh/v2/api/classes/Net/SSH/Proxy/Command.html