Giter Club home page Giter Club logo

ssh's Introduction

# status

can be used, still needs a (security) review.


# intro

this package contains an ssh client, sftpfs and the library that
the client uses.  the goals are to let plan 9 & inferno users use
resources from another (unix) machine: interactive shell, file
server, and eventually network.  for the future, an ssh server is
planned.


# install

first, make sure you have "util" installed.

change mkconfig if you do not have $ROOT set.  now "mk install" to
compile and install the files.

when building from within inferno, insert SYSHOST=Inferno and ROOT=
in the mk invocations to override the values in the mkconfig.


# using

to use this code, you need several steps.

create an empty sshkeys file. this stores host public keys.

	touch lib/sshkeys

start the tool (from within wm/wm, perhaps through lib/wmsetup)
that will ask you for host key verification on first connect:

	auth/sshkeys &

now you are ready to connect:

	ssh user@hostname

or:

	mount -c {sftpfs user@hostname} /n/hostname

on first attempt, you'll be asked for dsa & rsa keys by factotum.
you can skip those at first (hit "done"; rsa auth does work, you
just need to import the keys in the right format...).  then you'll
get a prompt from factotum for a password.


# download

the latest version can be found at:

    https://bitbucket.org/mjl/ssh


# licence & author

all files expect except ssh-rsa.b and ssh-dsa.b in
appl/cmd/auth/factotum/proto/ (which are derived from inferno) are
in the public domain.  this code has been written by mechiel lukkien,
reachable at [email protected].


# todo

- security problem:  i don't know how big (number of bits) the dh
  client side secret should be, and whether we should verify if it's
  correct/secure.

- factotum:  change proto=rsa & proto=dsa to not query user for keys if none matching.
        IO.findkeys() probably needs flag to not require a match:
        "keymanc <-= (attrs, 1, kc);     # TO DO: 1 => 0 for not needed"

- see if there is a race with newkeys.  we probably should use our new keys after we send the newkeys message, and likewise for when the newkeys message from remote comes in.

- sshlib: check that dh param from server is valid/sane?
- sshlib: zero out sensitive data after use.  can we do that with ipint too?  and encryption algorithm state.
- think about sshnet
- sshlib: do auth keyboard-interactive?  is there a generic challenge-response method in factotum?

- sftpfs: deal with case where sftp readdir does not return stat attributes?  openssh sftp server is fine, others may not be.
- sftpfs: allow giving path for uid/gid -> name translation?  needs care if that file is served by sftp.
- sftpfs: cache attrs for a short while?  for styx stat after styx walk (for both we do an sftp stat).  could help for create & remove too.
- sftpfs: read directories ahead, as optimisation?

- sshlib: make it faster.  the expmod() calls for the dh exchange take up seconds.  perhaps i use too many bits?
- sshlib: do rfc4419 "diffie-hellman-group-exchange-sha256".  inferno first needs sha256 for that.
- sshlib: compression.  it's hard in inferno, because we have to flush the
  buffers for each packet (but keep compression state).  inferno's
  deflate filter doesn't support that.
- crypto:  cast128-cbc, test/fix blowfish, sha256, ripemd160
- test IDEA?
- test against other sshd's than openssh (e.g. dropbear, lsh, more?)


# docs

see doc/rfc.txt for the relevant rfc's and some excerpts from it.

sshpubkey turns the public part of key (from factotum, or as generated
by dsagen,rsagen) into a string you can put in an openssh
.ssh/authorized_keys.

ssh's People

Contributors

mjl- avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

cephdon mennis

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.