É 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.
Respostas:
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 doopen
comando.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
,pwd
etc.)fonte
-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).ssh-dss/ssh-rsa key_size
prefixo.