Typescript: ssh2-sftp-client problemi s povezivanjem na SFTP server dok FileZilla može
Opsežno sam pretraživao Stack Overflow i Google i još uvijek nisam pronašao rješenje.
Korištenjem Typescripta, node v16.18.0 i ssh2-sftp-klijenta, kod ispod može se uspješno povezati na moj sftp poslužitelj (hostiran na IIS-u) koji zahtijeva korisničko ime, lozinku i privatni ključ.
let sftp = new Client();
// sftp.tryKeyboard = true;
let conn = await sftp
.connect({
protocal: 'sftp',
host: '##.##.##.##',
port: 22,
username: 'someUserName',
remotePath: 'somePaht',
password: 'somePassword',
privateKey: key,
// tryKeyboard: true,
})
.then(async() => {
// return;
console.log('You connected!');
})
.catch((err: any) => {
console.log(err, 'catch error');
});
Međutim, korištenjem potpuno istog koda, ali s parametrima veze za drugi SFTP poslužitelj (hostan na Linuxu) koji zahtijeva korisničko ime i privatni ključ, ali ne i lozinku, ne uspijeva se uspostaviti veza.
let sftp = new Client();
// sftp.tryKeyboard = true;
let conn = await sftp
.connect({
protocal: 'sftp',
host: '##.##.##.##',
port: 22,
username: 'gp',
remotePath: 'gp',
//password: 'NA',
privateKey: key,
// tryKeyboard: true,
})
.then(async() => {
// return;
console.log('You connected!');
})
.catch((err: any) => {
console.log(err, 'catch error');
});
i ovo je pogreška koju dobivam koristeći gore navedeni kod:
Greška: connect: getConnection: Sve konfigurirane metode autentifikacije nisu uspjele u SftpClient.fmtError (D:\app\node_modules\ssh2-sftp-client\src\index.js:111:22) u SftpClient.connect (D:\app\node_modules\ssh2-sftp-client\src\index.js:249:37) u processTicksAndRejections (node:internal/process/task_queues:96:5) u async getSftpConnection (D:\app\index.ts:67:12) { code: 'ERR_GENERIC_CLIENT', custom: true } catch error
Kao test koristio sam potpuno iste vrijednosti za povezivanje koristeći FileZilla FTP klijent i povezuje se bez problema. Nemam administratorski pristup Linux serveru pa ne mogu dobiti dodatne informacije o njegovoj konfiguraciji, ali mogu potvrditi da ove vrijednosti parametara veze rade u FileZilli. Očito FileZilla radi nešto što ja ne radim.
Ovo je osnovna konfiguracija u FileZilla:
i mapa s kojom je bila povezana:
Kako mogu riješiti ovaj problem? Kako mogu dobiti dodatne informacije o tome što uzrokuje neuspjeh veze?
Hvala.
Odgovor #1
Ispostavilo se da je tip ključa koji sam koristio bio rsa. IIS je puno popustljiviji nego Linux. Da bi ovo radilo na Linux sftp-u, morao sam dodati ove 2 linije u konfiguracijsku datoteku
hostkeyalgorithms=ssh-rsa,[email
pubkeyacceptedalgorithms=+ssh-rsa,[email
datoteka s konfiguracijom nalazi se na:
/etc/ssh/sshd_config
Međutim, na ovom snimku zaslona možete vidjeti da su te 2 linije zakomentirane. To je zato što sam ih nakon što sam ovo uspio pokrenuti zakomentirao i pokušao koristiti ključ u ED25519 formatu, što je uspjelo.
Ukratko, trebao sam koristiti ED25519 tip ključa kako ne bih morao petljati s Linux serverom. Ali ako želim koristiti RSA ključ, onda dodajte gore spomenute 2 linije u konfiguracijsku datoteku.



