Giter Club home page Giter Club logo

hyperssh's Introduction

hyperssh

SSH and SSHFS over the Hyperswarm DHT!

Installation

npm install -g hyperssh // ssh / fuse client stubs
npm install -g hypertele // hyperswarm server proxy
npm install -g hyper-cmd-utils // keygen utils

Usage

Server

On a server

hyper-cmd-util-keygen --gen_seed
-> SEED

hypertele-server --seed SEED -l 22
-> PEER_KEY

This will start announcing the server on the DHT.

Client

On the client

hyperssh -s ab01f... -u maf
hyperssh -s ab01f... -u maf -i keypair.json

Read more about using identities here: https://github.com/prdn/hyper-cmd-docs/blob/main/identity.md

SSHFS (mount a remove fs/folder via ssh)

hyperssh-fuse -s ab01f... -u maf -m ~/mnt

Hyperswarm will do UDP holepunching under the hood, so even if your server is located on a home network it should be accessible.

Windows RDP

You can also use hyperssh with Windows RDP to remotely log in to your windows machines.

On the server

hypertele-server --seed SEED -l 3389

On the client

hyperssh --rdp -s ...

The hyper-cmd system

hyperssh supports the hyper-cmd system!

Identity management: https://github.com/prdn/hyper-cmd-docs/blob/main/identity.md

Host resolution: https://github.com/prdn/hyper-cmd-docs/blob/main/resolve.md

License

MIT

hyperssh's People

Contributors

andrewosh avatar lukks avatar mafintosh avatar prdn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

hyperssh's Issues

Feature: specify which host key to return, for reproducibility

Hi @mafintosh !

I'm using hyperssh (brilliant!) to log into a remote machine; I've used pm2 to set it up to run the server.js code on that remote machine on boot. What I'm finding is that because the 'ssh-keyscan' command run by server.js returns an effectively randomized list of the host keys available on the remote machine, I can't reliably count on using the same key when hyperssh'ing in as a client.

The relevant line is here:

fingerprint = execSync('ssh-keyscan localhost', { stdio: ['ignore', null, 'ignore'] }).toString().split('\n')

Turns out, though, that one can specify the key type in ssh-keyscan, e.g.:

ssh-keyscan -t "rsa"

So, as a hack, I've added that to make the key choice reliable.

You've probably got a more elegant way to address such issues -- anyway, just wanted to let you know that I'm using hyperssh and it's awesome -- and that this hack addressed my particular use-case, for what it's worth ..

Cheers!
Don

add static DHT key

Every time hyperssh starts is generates new key to connect to. It would be helpful to be able to stick to some static random key.

How to prevent fingerprint issues?

Every time I spawn fuse it complains about a unknown fingerpint because the port changed.

Why don't we just pass -o StrictHostKeyChecking=no to SSH?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.