10 de juny de 2021

Connecta't mitjançant SFTP mitjançant SSH.NET

Exempció de responsabilitat: No es tracta d'un post relacionat amb el financer. :)

Recollida de dades de proveïdors bancaris

En aquests temps d'API a tot arreu, pot semblar un anacronisme l'ús de SFTP per connectar-se a un servidor remot i obtenir una llista de fitxers per a l'intercanvi d'informació, però en el món financer (malauradament) és més comú del que penseu.

En el meu projecte actual he de connectar-me a un servidor remot a través del Secure File Transfer Protocol (també conegut com a SFTP) utilitzant un nom d'usuari, una clau privada RSA i una frase fàssfase. Un cop connectats, l'objectiu és llegir alguns fitxers d'una carpeta remota i descarregar-los a una carpeta local.

Per aconseguir-ho us recomano que utilitzeu SSH.NET, una de les biblioteques SSH més populars per a .NET, disponible a nuget.

SSH.NET a NuGet

Més informació sobre SSH.NET aquí.

Connexió al servidor

La part més difícil aquí és configurar la connexió, com de costum. Hem de proporcionar l'url i el port del servidor, en combinació amb el nom d'usuari i un fitxer que conté la clau privada del certificat RSA, i -per descomptat- la frase de contrasenya.

Aquí teniu el codi final i funciona :)

Fes un cop d'ull a la línia ressaltada (7). La clau aquí és crear un fitxer que conté la clau privada. Us recomano que utilitzeu filezilla o similar per provar la connexió i desar-la en un fitxer. El fitxer ha de tenir un aspecte així:

PuTTY-User-Key-File-2: ssh-rsa
Xifratge: aes256-cbc
Comentari: rsa-key-KBL-20171006
Línies públiques: 6
AAB3NzaC1yc2EAAJQAAAQEAnHp1CA4xF04ZdOQ/rsxJoW9fPJ2RD
FgMNVIqsUsjeRbIoZ2y8SMD9b7MMB0lpKXgJ2dYDgOnh2q
j4VTpEoI2JWh4NdQgSH0O+2oLmQnwgDPT7Kva095ggEQiqScX4+31aY02/nz
mK86sxq/sUsW/UqgS+pPViRQLVzDXFf8XIYSSZngmV+Rk108BQ==
Línies privades: 14
khHfZWB0vBIFtKc4s98xGDFhwZNJQByUTtE7um0tcU4cwy1QTPf3GIuN
vyhHxIGx3LBtFJqzbZVJtOJVSYjkBTGbNc62D0uJCxYVf8PUUStI6GbOkkyDW/Vt
beWZ3s/DugsImjcbPxdEz/2X86uzd5U5v4/wGKQr8GWJtNksMcJ
k7JgRYGA/t0cSE2980MxhZOBg2Gn7+0A6mWgSf2Rr7hpcqsou1
hmc1HYtN7Oj4WT7hvRt8ZAC3/ekTdJ4K3K7vKglSHoQ
tnimHaanJHz4RGBb78Alllk+OYk3TN0Etcwod3401cLpjYYeq6veZLA/KfCHuiJ+
+Zqoy//NY9egfXd1hB0kmiemwO8wGfLS7ppS/WvPOknW9I8SNMllR1vmO3Hk6S3x
KfAG03ZWNoKDLvAIUllNyMpf9p8oKLF2ny4bJKsfNtr4Y0ejQJUFkC
uNz1S4VJ8j1fRcIjx4yT121B9BDfp486RUmnEgsOFEtmVyHPfNxYzDXq2MjTf4l/
MI5cKWHrDbDC/Cu3YvkF3gekLAb/j9Cie/feHmSnbuZ2VEr6zUt10yaH4hPejCOw
FYDZb0I8xxxWJZ6BbpLWDqeD0Oiss8UnDhha/iKvodA9LIG0T
VRlScvGvuzClGYkc7UIWIoARvdxp46YlGMu4mWGeVkNcrxXnmUkdKyNqGjAGJoK/
Private-MAC: d288fffe72914eb62ed60a7e50fd8ce775

Bonificació (truc)

He passat molt de temps abans que funcioni rebent una excepció SSH "Fitxer de clau privada no vàlid", però el mateix fitxer de clau funciona bé quan s'utilitza l'aplicació Filezilla per connectar-se, de manera que #WhatTheHell està passant 😬

Finalment em vaig adonar que això és perquè la clau privada ha de ser compatible amb SshNet, per la qual cosa hem de convertir la clau privada utilitzant Generador de clau PuTTY (en el meu cas, la mateixa aplicació que utilitzem per crear el certificat). Un cop obert a PuTTY, només has d'exportar la clau de fitxer a OpenSSH i utilitzar aquest nou fitxer ppk en lloc de l'anterior.

Exporta la clau OpenSSH

Si obriu el fitxer nou veureu que el fitxer de clau ara comença amb:

——COMENCEU LA CLAU PRIVADA RSA——

I acaba amb:

——FI DE LA CLAU PRIVADA RSA——

Ara aquesta és una clau privada vàlida de SSH i va sacsejar el treball com un encant ;)

Feliç bacallà!

sobre l'autor

Albert González

CTO
llegir més
your independent wealth managers

Aconsegueix una tranquil·litat inigualable de la teva riquesa

Posa'T en contacte
Gràcies! S'ha rebut la vostra tramesa!
Ui! Alguna cosa ha fallat mentre enviava el formulari.
Fimarge Societat Financera d'Inversió SA
C/ Bonaventura Armengol, 10
Ed. Bloc Montclar 1, 5è 1a
Andorra la Vella
Nº Registre Societat: 5711
Nº Registre Tributari: A-700866-T
Nº Autorització AFA: SFI-04/95 (20/04/1988)