Execute scp-then-ssh em uma conexão

0

Tanto no trabalho quanto em casa, costumo fazer o seguinte com frequência:

$ scp "SomeScriptIJustCreatedOrModified.sh" some-server:
$ ssh some-server ./SomeScriptIJustCreatedOrModified.sh arguments

E, às vezes, essa variação também:

$ scp "SomeScriptIJustCreatedOrModified.sh" some-server:/tmp
$ ssh some-server -t sudo -u other_user /tmp/SomeScriptIJustCreatedOrModified.sh arguments

O problema é que o servidor geralmente está em um país diferente e o handshake do SSH normalmente demora pelo menos alguns segundos - e essa aparente curta espera pode envelhecer rapidamente, bem como atrapalhar longas listas de servidores. Não só isso, eu fui repreendido antes por fazer conexões SSH sucessivamente rápidas e suspeitas.

Como conseguir isso?

    
por Ekevoo 21.08.2014 / 22:28

2 respostas

2

Tente pesquisar em controlmaster . Ele abre uma única conexão ssh e permite que as futuras conexões ssh e scp passem pela mesma conexão, portanto, não há necessidade de fornecer a senha novamente ou aguardar a conexão ser aberta.

Aqui está um exemplo de como configurar controlmaster .

Edite seu arquivo .ssh/config para incluir as linhas:

Host hostname                                                                                                          
    User username                                                                                                  
    HostName hostname                                                                                                        
    ControlMaster auto
    ControlPath ~/.ssh/%r@%h:%p

Em que hostname e username são substituídos pelas informações apropriadas.

    
por 22.08.2014 / 20:53
0

Se você tiver acesso ssh no servidor, sempre poderá usar um cliente sftp como o ExpanDrive para montar seu diretório pessoal remoto em sua máquina local. Então você pode simplesmente escrever seu script localmente em um editor de texto e salvá-lo na máquina remota montada localmente.

Nesse ponto, ele estará no servidor e tudo o que você precisa fazer é ssh e executá-lo. Contanto que você mantenha suas conexões sftp e ssh abertas, você pode salvar e executar quantos scripts quiser, o dia todo, e você só precisa conectar uma vez para o sftp e outra para o ssh.

Lembre-se que com esse fluxo de trabalho, toda vez que você salvar, você estará escrevendo para o servidor remoto, e ele gravará tão rápido quanto o sistema operacional e as limitações de rede permitirem (ou seja, será mais lento do que escrever localmente).

    
por 21.08.2014 / 22:40