steelbrain / steelbrain/node-ssh
Unable to SSH tunnel to hit private API
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 1k
- Forks
- 94
- PR merge metrics
- No merged PRs in 30d
Description
Hey all,
I have a server in a private subnet that is hosting a REST API on port 80 and a jump box in a public subnet that I would like to tunnel through so that I can invoke the REST API in the same execution with axios. When I run the command line command to tunnel everything works fine:
ssh -i "keypair.pem" -L 8081:<API HOST>:80 <JUMP BOX USER>@<JUMP BOX IP>
Once I run that command, as long as I keep the session open, I can hit the API through Postman/Axios. All good.
I am trying to do the same thing with this library, but the connection is not being exposed properly and I can't figure out why. Here is my code:
const ssh = new NodeSSH();
await ssh.connect({
host: '<JUMP BOX IP>',
username: '<JUMP BOX USER>',
privateKey: `RSA KEY`
});
ssh.connection?.forwardOut('127.0.0.1', 8081, <API HOST>, 80);
const response = await axios.get(`http://localhost:8081/<ENDPOINT PATH>`);
The connection opens fine and I can exec commands as I want. This issue may be a result of using async/await as well, but I would like to stick using that model if possible.
Thanks in advance for the eyes and any ideas.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at ssh.connection?.forwardOut in the issue's example and compare its forwarding behavior with the command-line SSH tunnel. Check the node-ssh forwarding API and verify the localhost:8081 Axios request; done means the private API endpoint responds while the SSH session remains open.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- node.js, typescript
- Domain
- backend, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100