పూర్తయిన CONNECT సాకెట్ను ssh2-sftp-client కు అప్పగించండి
ప్రాక్సీ హెడర్ల తర్వాత ఇప్పటికే బఫర్లో ఉన్న SSH ఆహ్వానాన్ని కాపాడి, ఆపై గమ్యస్థానపు సాధారణ SSH ఎంపికలతో sock ఉపయోగించండి.
import SftpClient from 'ssh2-sftp-client';
const client = new SftpClient();
await client.connect({
...sshOptions,
sock: tunnelSocket,
});ఉన్న గమ్య హోస్ట్, పోర్ట్, ఖాతా మరియు హోస్ట్-కీ విధానాన్ని sshOptions లో ఇవ్వండి. సాకెట్ ఇప్పటికే ఆమోదించిన CONNECT సొరంగం ద్వారా ఆ గమ్యానికి వెళ్లాలి, ప్రాక్సీ వినిపించేవాడి వరకే కాదు.
స్ట్రీమ్ అప్పగించే ముందు సహాయకుడిని తనిఖీ చేయండి: 407 లేదా ఇతర విఫల ప్రతిస్పందనలను తిరస్కరించండి, సెటప్ గడువులను ఉంచండి మరియు తిరస్కరించిన సాకెట్లను మూసివేయండి. Node యొక్క HTTP connect ఈవెంట్లో హెడర్ల తర్వాత ఇప్పటికే చదివిన head బైట్లు ఉంటాయి; సరైన స్ట్రీమ్ అప్పగింపుతో ఖాళీ కాని బఫర్ను ఉంచండి, ఉదాహరణకు socket.unshift(head). అందులో SSH ఆహ్వానం ఉండవచ్చు.
సాకెట్ను వెంటనే అప్పగించి, ఆపై పూర్తయిన SFTP పనిని await client.end() తో మూసివేయండి. మరెక్కడైనా HTTP Agent ఈ SSH రవాణాను సృష్టించదు, మరియు CONNECT ఖాతా SSH ఖాతా నుండి వేరు.