GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - cmdscale/tssh

BranchesTags
Open more actions menu

Latest commit

 

History

11 Commits
11 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
nix
nix
 
 
tssh-core
tssh-core
 
 
tssh-pkcs11
tssh-pkcs11
 
 
tssh
tssh
 
 
.gitignore
.gitignore
 
 
.licensesnip
.licensesnip
 
 
Cargo.lock
Cargo.lock
 
 
Cargo.toml
Cargo.toml
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
architecture.d2
architecture.d2
 
 
architecture.svg
architecture.svg
 
 
flake.lock
flake.lock
 
 
flake.nix
flake.nix
 
 
key-creation.d2
key-creation.d2
 
 
key-creation.svg
key-creation.svg
 
 
licensesnip.config.jsonc
licensesnip.config.jsonc
 
 
ssh-login.d2
ssh-login.d2
 
 
ssh-login.svg
ssh-login.svg
 
 

Repository files navigation

TSSH

tssh manages TPM-backed keys that are ready to use with ssh. Its main focus is to be as stateless as possible by leveraging the fact that TPMs can derive keys deterministically. By default, TSSH uses the username, hostname and port as the salt for key derivation, thereby ensuring that each host has a unique public key. Furthermore, TSSH ensures that the SSH server is offered only the correct key. Check further down for detailed diagrams.

Prerequisites

Make sure you have installed the following libraries:

  • SQLite3
  • Tpm2-tss.

Furthermore, the binary must be allowed to use the TPM. This is typically achieved by adding the user to the TSS group.

Install

Execute the following from the project route:

cargo install --path ./tssh/ --locked

Nix tests

nix flake check -L

Example usage

Add the output of the following command to your ~/.ssh/config file:

localhost $> tssh include

Alternatively, if you don't mind losing your current configuration, you could simply run the following command:

localhost $> tssh include -q > ~/.ssh/config

You can now create an SSH public key using the following command:

localhost $> tssh create [email protected]

Please note that the above command may take several seconds to execute the first time it is run. This is because it tests which algorithms your TPM supports. Subsequent runs retrieve this information directly from the configuration stored in the SQLite database.

Type in the following command to extract the public key, which is ready to use:

localhost $> tssh get example.com
========== Key for [email protected]:22 =========

ecdsa-sha2-nistp384 AAAAE2 .........

Once you have informed example.com of the public key (e.g. by adding it to the authorised_hosts file), you can simply use SSH to log in:

localhost $> ssh [email protected]

[email protected] $>

Diagrams

Architecture

Diagram of the architecture of tssh

Key Creation

Diagram of how keys are created by tssh

SSH Login

Diagram of how a ssh login work with tssh

Features planned

  • Key import
  • Keys with pin
  • Keys bound to hardware state (via PCR)
  • Bundled builds
  • Minimal build for better container support
  • Backup key propagation
  • Backup key login (with different backends: plain, bitwarden,.. etc.)
  • Commandline completion
  • Apple secure enclave support

License

The software is provided under GPLv3. Contributions to this project are accepted under the same license.

About

No description, website, or topics provided.

Resources

Readme
GPL-3.0 license
Activity
Custom properties

Stars

13 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.