Aqui está a pergunta que alguns podem achar bastante exótica (e pode muito bem ser impossível): é possível de alguma forma fazer upload de um arquivo ao mesmo tempo em que faço login? Algo como:
$ ssh --some-option /file/to/be/uploaded user@server
Algo como primeiro usar scp
para carregar o arquivo, depois fazer login, mas apenas fornecer a senha uma vez. A coisa é, eu sempre tenho que fazer isso (não pergunte, apenas não...)
Alternativamente, existe uma maneira de 'empacotar' vários dos comandos da família ssh, então você só precisa fornecer a senha uma vez (eu sei sobre o uso de chaves privadas/públicas - não é isso que eu quero)?
Editar 1
Não é exatamente uma duplicata: acaba entrando em conflito com o seguinte (que eu tenho que usar):
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Se eu usar o compartilhamento de conexão, parece desabilitar tudo o que o ssh-agent faz. Existe uma maneira de contornar isso?
Editar 2
Fiz as seguintes modificações:
$ cat .profile
...
function ssh
{
h=$1
/usr/bin/scp ~/mybashrc $h:.bashrc
/usr/bin/scp ~/.vimrc $h:.vimrc
/usr/bin/ssh $h
}
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
e:
$ cat ~/.ssh/config
...
Host *
ForwardAgent yes
User myuser
IdentityFile ~/.ssh/id_rsa
ControlPath ~/.ssh/S.%r@%h:%p
ControlMaster auto
ControlPersist yes
Sem as Control*
opções, posso fazer login no servidor bastion e depois em outros servidores dessa rede, mas quando adiciono as opções, obtenho o seguinte:
$ ssh rgs-gameiom
mybashrc 100% 177 18.0KB/s 00:00
.vimrc 100% 59 3.5KB/s 00:00
Last login: Thu Oct 3 08:35:38 2019 from 80.229.227.116
$ ssh db3
Permission denied (publickey).
O SSHv2 oferece suporte à multiplexação de conexão – iniciando várias sessões de comando na mesma conexão. Vários tópicos existentes sobre ativá-lo:
Não, não desativa nada.
No entanto, com o compartilhamento de conexão ativo, apenas a primeira invocação – aquela que realmente se conecta ao servidor e solicita credenciais – prestará atenção ao $SSH_AUTH_SOCK do seu ssh-agent.
Essa primeira conexão ainda usará o agente para autenticar, se necessário, e configurará o encaminhamento do agente, se ativado.
Mas as sessões "compartilhadas" futuras na mesma conexão ainda estão pegando carona no processo do cliente original (que permanece em execução em segundo plano), o que significa que elas continuarão usando o mesmo agente ssh que a conexão original usava - elas não migrarão automaticamente para um novo soquete de agente.
Portanto, se você iniciar o ssh-agent de forma que ele saia automaticamente após fechar o terminal, essa conexão multiplexada perderá seu "encaminhamento de agente" depois que isso acontecer.
Para evitar isso, a) inicie o ssh-agent de uma maneira mais persistente e talvez use um local de soquete fixo para que seja mais fácil reiniciar exatamente no mesmo caminho,
ou b) evite ControlPersist e inicie manualmente uma conexão "mestre" quando necessário: