Script para baixar arquivos do Servidor SSH

0

É possível criar um script que siga os mesmos comandos que o FileZilla executa ao se conectar a um servidor ssh?

Quando eu faço login manualmente usando o FileZilla, recebo a seguinte mensagem para os seguintes tipos de conexão:

The server's host key is unknown. You have no guarantee that the server is the
computer you think it is.


    Host:  securedomain_1.com:22
    Fingerprint: ssh-dss 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

    Host:  securedomain_2.com:22
    Fingerprint: ssh-rsa 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

    Host:  securedomain_3.com:22
    Fingerprint: ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx


Trust this host and carry on connecting?
[ ] Always trust this host, add this key to the cache.
[OK] [CANCEL]

Eu clique em OK e não adicionar chave para cache ...

Quando eu faço login manualmente, esses são os comandos que o FileZilla executa:

Status: Connecting to my.secure.site.com...
Response:   fzSftp started
Command:    open "[email protected]" 22
    [asks for key...]
    [I manually click OK]
Command:    Trust new Hostkey: Once
Command:    Pass: ********
Status: Connected to my.secure.site.com
Status: Retrieving directory listing...
Command:    cd "/SFTP/DIR"
Response:   New directory is: "/SFTP/DIR"
Command:    ls
Status: Listing directory /SFTP/DIR
Status: Calculating timezone offset of server...
Command:    mtime "IN"
Response:   1412312345
Status: Timezone offsets: Server: -18000 seconds. Local: -18000 seconds. Difference: 0 seconds.
Status: Directory listing successful

O que exatamente está acontecendo quando clico em OK para "Confiar neste host e continuar conectando"?

Estou aceitando uma chave do servidor SSH?

Isso seria para uma máquina Windows. Eu estava pensando em usar o WinSCP, mas gostaria de entender o que está acontecendo quando me conecto a esses servidores. Eu tenho alguns scripts que são destinados para FTPS que não funcionam quando para esses servidores.

jes516
fonte
eu tenho que explicar uma chave no meu script?
jes516

Respostas:

1

Ao conectar-se a um servidor SSH, você precisa verifique se você confia na chave do host do servidor . Isto é para evitar ataque man-in-the-middle .

Em Scripts WinSCP , você verifica a chave do host usando o -hostkey interruptor do open comando.

open sftp://user:[email protected]/ -hostkey="ssh-dss 2048 xx..."

Referências: Onde obtenho a impressão digital da chave de host SSH para autorizar o servidor?

Há um guia sobre como converter script FTP do Windows para script SFTP WinSCP .


Nota sobre os comandos no log FileZilla: Esses comandos são proprietários de comandos do psftp (o que o FileZilla usa internamente para implementar o protocolo SFTP). Eles não têm nada a ver com os protocolos SFTP ou SSH como tal. Obviamente, todos eles mapeiam internamente para algumas solicitações de SFTP e você pode emulá-los usando o script WinSCP. Mas os comandos do WinSCP seriam diferentes. Observe também que o SFTP, ao contrário do FTP, é um protocolo binário, portanto, não há comandos de texto como no FTP ( cd, pwdetc.)

Martin Prikryl
fonte
é o -hostkey="" toda a informação "impressão digital" que é exibida no prompt filezilla? Além disso, você sabe se eu posso testar "conexões ssh", usando openssh, gerando uma chave no Linux e, em seguida, usando o script WinSCP + no Windows? Eu uso o Linux no VirtualBox para Python scripting tão im familiarizado com linux / ftp, mas eu gostaria de fazer o auto-teste antes de começar a tentar acertar o servidor de produção real (não o meu servidor).
jes516
Sim, é a string inteira. Vejo [ winscp.net/eng/docs/faq_script_hostkey](Where recebo impressão digital da chave de host SSH para uso com scripts?). Eu assumo isso "gerando uma chave" Você quer dizer "obtendo a impressão digital da chave hospedeira" (no formato necessário para WinSCP).
Martin Prikryl
desculpe sim, gerar uma chave no openssh para eu obter em um ambiente windows usando o winscp. esta ideia teria o mesmo efeito que a conexão no meu post original? .. eu posso fazer o meu teste sem gerar tráfego para o servidor de produção ..
jes516
O OpenSSH exibe a chave do host em formato semelhante ao FileZilla / WinSCP, exceto que não usa ssh-dss/ssh-rsa key_size prefixo.
Martin Prikryl