Giter VIP home page Giter VIP logo

ssh-tpm-agent's Introduction

SSH agent for TPM

ssh-tpm-agent is a ssh-agent compatible agent that allows keys to be created by the Trusted Platform Module (TPM) for authentication towards ssh servers.

TPM sealed keys are private keys created inside the Trusted Platform Module (TPM) and sealed in .tpm suffixed files. They are bound to the hardware they are produced on and can't be transferred to other machines.

This allows you to utilize a native client instead of having to side load existing PKCS11 libraries into the ssh-agent and/or ssh client.

Features

  • A working ssh-agent.
  • Create sealed ssh keys on the TPM.
  • PIN support, dictionary attack protection from the TPM allows you to use low entropy PINs instead of passphrases.
  • TPM session encryption.
  • Proxy support towards other ssh-agent servers for fallbacks.

SWTPM support

Instead of utilizing the TPM directly, you can use --swtpm or export SSH_TPM_AGENT_SWTPM=1 to create an identity backed by swtpm which will be stored under /var/tmp/ssh-tpm-agent.

Note that swtpm provides no security properties and should only be used for testing.

Installation

The simplest way of installing this plugin is by running the follow go command.

go install github.com/foxboron/ssh-tpm-agent/cmd/...@latest

Alternatively download the pre-built binaries.

Usage

# Create key
$ ssh-tpm-keygen
Generating a sealed public/private ecdsa key pair.
Enter file in which to save the key (/home/fox/.ssh/id_ecdsa):
Enter pin (empty for no pin):
Enter same pin again:
Your identification has been saved in /home/fox/.ssh/id_ecdsa.tpm
Your public key has been saved in /home/fox/.ssh/id_ecdsa.pub
The key fingerprint is:
SHA256:NCMJJ2La+q5tGcngQUQvEOJP3gPH8bMP98wJOEMV564
The key's randomart image is the color of television, tuned to a dead channel.

$ cat /home/fox/.ssh/id_ecdsa.pub
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOTOsMXyjTc1wiQSKhRiNhKFsHJNLzLk2r4foXPLQYKR0tuXIBMTQuMmc7OiTgNMvIjMrcb9adgGdT3s+GkNi1g=

# Using the socket
$ ssh-tpm-agent -l /var/tmp/tpm.sock

$ export SSH_AUTH_SOCK="$(ssh-tpm-agent --print-socket)"

$ ssh [email protected]

Import existing key

Useful if you want to back up the key to a remote secure storage while using the key day-to-day from the TPM.

# Create a key, or use an existing one
$ ssh-keygen -t ecdsa -f id_ecdsa
Generating public/private ecdsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_ecdsa
Your public key has been saved in id_ecdsa.pub
The key fingerprint is:
SHA256:bDn2EpX6XRX5ADXQSuTq+uUyia/eV3Z6MW+UtxjnXvU fox@framework
The key's randomart image is:
+---[ECDSA 256]---+
|           .+=o..|
|           o. oo.|
|          o... .o|
|       . + ..  ..|
|        S .   . o|
|       o * . oo=*|
|        ..+.oo=+E|
|        .++o...o=|
|       .++++. .+ |
+----[SHA256]-----+

# Import the key
$ ssh-tpm-keygen --import id_ecdsa
Sealing an existing public/private ecdsa key pair.
Enter pin (empty for no pin):
Confirm pin:
Your identification has been saved in id_ecdsa.tpm
The key fingerprint is:
SHA256:bDn2EpX6XRX5ADXQSuTq+uUyia/eV3Z6MW+UtxjnXvU
The key's randomart image is the color of television, tuned to a dead channel.

Install user service

Socket activated services allow you to start ssh-tpm-agent when it's needed by your system.

# Using the socket
$ ssh-tpm-agent --install-user-units
Installed /home/fox/.config/systemd/user/ssh-tpm-agent.socket
Installed /home/fox/.config/systemd/user/ssh-tpm-agent.service
Enable with: systemctl --user enable --now ssh-tpm-agent.socket

$ systemctl --user enable --now ssh-tpm-agent.socket

$ export SSH_AUTH_SOCK="$(ssh-tpm-agent --print-socket)"

$ ssh [email protected]

Proxy support

# Start the usual ssh-agent
$ eval $(ssh-agent)

# Create a strong RSA key
$ ssh-keygen -t rsa -b 4096 -f id_rsa -C ssh-agent
...
The key fingerprint is:
SHA256:zLSeyU/6NKHGEvyZLA866S1jGqwdwdAxRFff8Z2N1i0 ssh-agent

$ ssh-add id_rsa
Identity added: id_rsa (ssh-agent)

# Print looonnggg key
$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]8TWynQ== ssh-agent

# Create key on the TPM
$ ssh-tpm-keygen -C ssh-tpm-agent
Generating a sealed public/private ecdsa key pair.
Enter file in which to save the key (/home/fox/.ssh/id_ecdsa):
Enter pin (empty for no pin):
Confirm pin:
Your identification has been saved in /home/fox/.ssh/id_ecdsa.tpm
Your public key has been saved in /home/fox/.ssh/id_ecdsa.pub
The key fingerprint is:
SHA256:PoQyuzOpEBLqT+xtP0dnvyBVL6UQTiQeCWN/EXIxPOo
The key's randomart image is the color of television, tuned to a dead channel.

# Start ssh-tpm-agent with a proxy socket
$ ssh-tpm-agent -A "${SSH_AUTH_SOCK}" &

$ export SSH_AUTH_SOCK="$(ssh-tpm-agent --print-socket)"

# ssh-tpm-agent is proxying the keys from ssh-agent
$ ssh-add -L
ssh-rsa AAAAB3NzaC1yc[...]8TWynQ== ssh-agent
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNo[...]q4whro= ssh-tpm-agent

ssh-tpm-add

$ ssh-tpm-agent --no-load &
2023/08/12 13:40:50 Listening on /run/user/1000/ssh-tpm-agent.sock

$ export SSH_AUTH_SOCK="$(ssh-tpm-agent --print-socket)"

$ ssh-add -L
The agent has no identities.

$ ssh-tpm-add $HOME/.ssh/id_ecdsa.tpm
Identity added: /home/user/.ssh/id_ecdsa.tpm

$ ssh-add -L
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJCxqisGa9IUNh4Ik3kwihrDouxP7S5Oun2hnzTvFwktszaibJruKLJMxHqVYnNwKD9DegCNwUN1qXCI/UOwaSY= test

ssh-tpm-hostkey

ssh-tpm-agent also supports storing host keys inside the TPM.

$ sudo ssh-tpm-keygen -A
2023/09/03 17:03:08 INFO Generating new ECDSA host key
2023/09/03 17:03:08 INFO Wrote /etc/ssh/ssh_tpm_host_ecdsa_key.tpm
2023/09/03 17:03:08 INFO Generating new RSA host key
2023/09/03 17:03:15 INFO Wrote /etc/ssh/ssh_tpm_host_rsa_key.tpm

$ sudo ssh-tpm-hostkeys --install-system-units
Installed /usr/lib/systemd/system/ssh-tpm-agent.service
Installed /usr/lib/systemd/system/ssh-tpm-agent.socket
Installed /usr/lib/systemd/system/ssh-tpm-genkeys.service
Enable with: systemctl enable --now ssh-tpm-agent.socket

$ sudo ssh-tpm-hostkeys --install-sshd-config
Installed /etc/ssh/sshd_config.d/10-ssh-tpm-agent.conf
Restart sshd: systemd restart sshd

$ systemctl enable --now ssh-tpm-agent.socket
$ systemd restart sshd

$ sudo ssh-tpm-hostkeys
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCLDH2xMDIGb26Q3Fa/kZDuPvzLzfAH6CkNs0wlaY2AaiZT2qJkWI05lMDm+mf+wmDhhgQlkJAHmyqgzYNwqWY0= root@framework
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDAoMPsv5tEpTDFw34ltkF45dTHAPl4aLu6HigBkNnIzsuWqJxhjN6JK3vaV3eXBzy8/UJxo/R0Ml9/DRzFK8cccdIRT1KQtg8xIikRReZ0usdeqTC+wLpW/KQqgBLZ1PphRINxABWReqlnbtPVBfj6wKlCVNLEuTfzi1oAMj3KXOBDcTTB2UBLcwvTFg6YnbTjrpxY83Y+3QIZNPwYqd7r6k+e/ncUl4zgCvvxhoojGxEM3pjQIaZ0Him0yT6OGmCGFa7XIRKxwBSv9HtyHf5psgI+X5A2NV2JW2xeLhV2K1+UXmKW4aXjBWKSO08lPSWZ6/5jQTGN1Jg3fLQKSe7f root@framework

$ ssh-keyscan -t ecdsa localhost
# localhost:22 SSH-2.0-OpenSSH_9.4
localhost ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCLDH2xMDIGb26Q3Fa/kZDuPvzLzfAH6CkNs0wlaY2AaiZT2qJkWI05lMDm+mf+wmDhhgQlkJAHmyqgzYNwqWY0=

Note: sshd seems to be a bit flakey when it decides to sign with SHA256 or SHA512, so your mileage might vary. Only SHA256 is supported by ssh-tpm-agent.

ssh-config

It is possible to use the public keys created by ssh-tpm-keygen inside ssh configurations.

The below example uses ssh-tpm-agent and also passes the public key to ensure not all identities are leaked from the agent.

Host example.com
    IdentityAgent $SSH_AUTH_SOCK

Host *
    IdentityAgent /run/user/1000/ssh-tpm-agent.sock
    IdentityFile ~/.ssh/id_ecdsa.pub

License

Licensed under the MIT license. See LICENSE or https://opensource.org/licenses/MIT

ssh-tpm-agent's People

Contributors

andersju avatar dcousens avatar foxboron avatar jrwren avatar jtagcat avatar nl6720 avatar rafiramadhana avatar stigtsp 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  avatar

ssh-tpm-agent's Issues

Load key "/home/jc/.ssh/hh-8192_rsa.tpm": error in libcrypto

Went overtime and ran out of time to get ssh-tpm-agent working.

Mentioned this in #24:

... level=DEBUG msg="%s not a TPM sealed key: %v\n" /r/c/ssh/hh-8192_ecdsa.tpm="tpm-ssh: unsupported key type \"TPM EC PRIVATE KEY\"

^ fixed this by generating a key using trunk, not v0.1.0

Now:

$ ssh-tpm-keygen
[---]

ssh config:

Match OriginalHost github.com
  IdentityAgent /run/user/1000/ssh-tpm-agent.sock
  IdentityFile /r/c/ssh/hh-8192_ecdsa.tpm
  IdentitiesOnly yes

$ ssh [email protected]
...
Load key "/r/c/ssh/hh-8192_ecdsa.tpm": error in libcrypto
Oct 14 17:03:20 hh-8192 ssh-tpm-agent[1984892]: time=2023-10-14T17:03:20.844+03:00 level=INFO msg="agent 25: agent: not implemented: \"[email protected]\""

This happens with RSA key as well.

Agent forwarding and adding key from stdin fails

I have an ansible playbook that adds an ssh key to the agent via stdin that fails with the ssh tpm agent. The ssh tpm agent is running with forwarding to another ssh agent, changing SSH_AUTH_SOCK to that agent and the ansible playbook works.

The playbook looks like this

- name: Add ssh key to ssh agent
  hosts: all
  serial: 1
  gather_facts: false
  tasks:
    - name: Read ansible ssh key
      community.hashi_vault.vault_read:
        url: "{{ vault.url }}"
        path: secret/SOME_PATH
      register: vault_ansible_data
      no_log: true
      delegate_to: localhost
    - name: Add ssh key to ssh agent
      ansible.builtin.command:
        cmd: "ssh-add -"
        stdin: '{{ vault_ansible_data["data"]["data"]["ssh_private_key"] }}'
      no_log: true
      changed_when: false
      delegate_to: localhost

Error message from ansible is

Could not add identity \"(stdin)\": agent refused operation"

Problem when proxying agent, breaks at one point

This problem occured (after a while):

2023/08/11 17:43:44 failed getting list from agent: agent: client error: write unix @->/run/user/1000/gnupg/S.gpg-agent.ssh: write: broken pipe
2023/08/11 17:43:44 failed getting Signers from agent: &{%!f(string=agent: client error: write unix @->/run/user/1000/gnupg/S.gpg-agent.ssh: write: broken pipe)}
2023/08/11 18:32:04 failed getting list from agent: agent: client error: write unix @->/run/user/1000/gnupg/S.gpg-agent.ssh: write: broken pipe
2023/08/11 18:32:47 failed getting list from agent: agent: client error: write unix @->/run/user/1000/gnupg/S.gpg-agent.ssh: write: broken pipe
  • After systemctl --user restart ssh-tpm-agent, the problem was resolved
  • Confirmed that ssh works when pointing $SSH_AUTH_SOCKET to gpg-agent

User systemd-unit:

[Unit]
Description=A ssh-agent compatible agent that support TPM keys
Documentation=https://github.com/Foxboron/ssh-tpm-agent

[Service]
ExecStart=/home/user/bin/ssh-tpm-agent -A /run/user/1000/gnupg/S.gpg-agent.ssh
ExecReload=/bin/kill -HUP $MAINPID
IPAddressDeny=any
RestrictAddressFamilies=AF_UNIX
RestrictNamespaces=yes
RestrictRealtime=yes
RestrictSUIDSGID=yes
LockPersonality=yes
SystemCallFilter=@system-service
SystemCallFilter=~@privileged @resources
SystemCallErrorNumber=EPERM
SystemCallArchitectures=native
NoNewPrivileges=yes
KeyringMode=private
UMask=0177
RuntimeDirectory=ssh-tpm-agent

[Install]
WantedBy=default.target

Consider RSA key support

With EvictControl implemented in go-tpm we could in theory support RSA keys, but default to NISP P256 keys.

It will be super slow, but we can atleast persist the RSA key which should be there on systems running systemd.

The default should always be the most sane ECC thing we have available.

user key functionality fails

turns out I was wrong about host keys failing and I hope this is another one of those situations.
I followed the instructions for user keys and can't find any evidence that the key is being used, plus I get the libcrypto error again:

ssh host.local
Load key "/home/user/.ssh/id_ecdsa.pub": error in libcrypto
[email protected]'s password:

Integrity check failed

Symptom: agent 13: failed getting handle: TPM_RC_INTEGRITY (parameter 1): integrity check failed

Cause: Generated key on another machine, can't use it on this machine. OR TPM state got flushed by an update.

ArchLinux package doesn't set the executable bit on install

Hi Morten,

I just installed the archlinux package extra/ssh-tpm-agent which correctly copies the files to /usr/bin but doesn't set the executable bit, thus throwing this error:

$ ssh-tpm-keygen
zsh: permission denied: ssh-tpm-keygen

setting the executable bit fixes this.

Error when running `ssh-tpm-keygen`: `open /dev/tpmrm0: permission denied`

Hello, when I try to run the ssh-tpm-keygen command, I get the following error: open /dev/tpmrm0: permission denied. Is the user executing the command expected to have some special permissions and / or is the user expected to belong to some group (e.g. tss group)?

Thank you very much and have a nice day!

host key functionality fails

everything seems to work ok but when I restart sshd:
Dec 10 01:08:32 host systemd[1]: Starting OpenBSD Secure Shell server...
Dec 10 01:08:32 host sshd[24703]: Unable to load host key "/etc/ssh/ssh_tpm_host_ecdsa_key.pub": error in libcrypto
Dec 10 01:08:32 host sshd[24703]: Unable to load host key "/etc/ssh/ssh_tpm_host_rsa_key.pub": error in libcrypto
Dec 10 01:08:32 host sshd[24704]: Unable to load host key "/etc/ssh/ssh_tpm_host_ecdsa_key.pub": error in libcrypto
Dec 10 01:08:32 host sshd[24704]: Unable to load host key "/etc/ssh/ssh_tpm_host_rsa_key.pub": error in libcrypto
Dec 10 01:08:32 host sshd[24704]: Server listening on 0.0.0.0 port 22.
Dec 10 01:08:32 host sshd[24704]: Server listening on :: port 22.
Dec 10 01:08:32 host systemd[1]: Started OpenBSD Secure Shell server.

PCR binding support

It could be nice to support binding a key to the state of user-selectable PCRs at creation time, e.g. to restrict keys to be used only with some sort of verified boot. This can indirectly be achieved by storing the .tpm file on a filesystem backed by a LUKS partition which itself is then bound to PCR state, but for unencrypted systems it might still be nice to directly support this. Also, the .tpm files could theoretically be leaked into an unverified boot session and then used with incorrect PCR state, natively binding the key within the TPM would mitigate this.

Support SSH_ASKPASS

I would be nice if $SSH_ASKPASS could be used for TPM key PIN entry in place of pinentry.

Most ssh users are likely to be familial with ssh askpass programs, but may not be so familiar with pinentry from the GnuPG world.

Maybe bug: Crashed once when trying to log in

  1. First login was OK
  2. Second login failed with this error
  3. Subsequent logins OK

From agent:

2023/07/30 03:37:29 agent 13: failed to sign: initializing session 1: TPM_RC_VALUE (parameter 2): value is out of range or is not correct for the context

From ssh -v ...

sign_and_send_pubkey: signing failed for ECDSA "/home/sgo/.ssh/id_ecdsa.pub" from agent: agent refused operation

ssh-tpm-agent UX issues

I'm struggling to picture the UX on how we should handle multiple keys.

ssh-agent is not really made for key creating this way, so there needs to be a secondary control thing for this.

Ed25519 key type support

I try to use ssh-tpm-keygen to import a ed25519 key, but this key type isn't support.

$ sudo ssh-tpm-keygen --import ~/.ssh/id_ed25519
Sealing an existing public/private ecdsa key pair.
Enter existing password (empty for no pin): 
2023/12/26 15:46:10 unsupported key type

Is it possible to support ed25519?

ssh-agent proxy support

A maybe common use-case is that you have one or more ssh-agent running. One key here, one key there.

ssh-tpm-agent can only support TPM sealed keys, but it could proxy requests to other ssh-agent sockets. This would allow you to rely on one socket for all of the key handling.

Clearly this should be an opt-in feature, but might make it a more valueable ssh-agent replacement.

ssh-tpm-agent --print socket prints value of $SSH_AUTH_SOCK and not its own socket

Hi, while setting this up I found that

ssh-tpm-agent --print-socket

does not return the correct value of /run/user/1000/ssh-tpm-agent.sock but rather the current value of $SSH_AUTH_SOCK,
which in my case pointed to the gpg-agent.sock.

I believe this should be fixed to correctly reflect the ssh-tpm-agent socket, so export SSH_AUTH_SOCK=$(tpm-ssh-agent --print-socket) works as expected.

Cannot import ecdsa-sha2-nistp384

ssh-tpm-keygen fails to import a nistp384 key (created using ssh-keygen -t ecdsa -b 384).

$ ssh-tpm-keygen --import ~/.ssh/id_ecdsa
Sealing an existing public/private ecdsa key pair.
/home/username/.ssh/id_ecdsa.pub already exists.
Overwrite (y/n)?y
Enter pin (empty for no pin): 
Confirm pin: 
panic: math/big: buffer too small to fit value
goroutine 1 [running]:
math/big.nat.bytes(...)
        /usr/lib/go/src/math/big/nat.go:1318
math/big.(*Int).FillBytes(0xc00002e860?, {0xc000022360?, 0x20?, 0x20?})
        /usr/lib/go/src/math/big/int.go:540 +0xec
github.com/foxboron/ssh-tpm-agent/key.ImportKey({0x5647fc58cbc8?, 0xc00002c200}, {0x5647fc577440?, 0xc00011fd58?}, {0x0, 0x0, 0x0}, {0xc000014520, 0xd, 0x10})
        /build/ssh-tpm-agent-git/src/ssh-tpm-agent.git/key/key.go:392 +0x165
main.main()
        /build/ssh-tpm-agent-git/src/ssh-tpm-agent.git/cmd/ssh-tpm-keygen/main.go:309 +0xd55

Using ssh-tpm-agent-git 0.2.0.r0.25e8edb-1 from AUR.

Change PIN

Is it possible to change the PIN for a key, similar to ssh-keygen's -p? I don't see an option in ssh-tpm-keygen for this.

0.3.0: absolute paths are rewritten

If an absolute path is specified for ssh-tpm-keygen -f, it becomes a relative path under ~/.ssh/:

$ ssh-tpm-keygen -b 256 -f /tmp/ec
Generating a sealed public/private ecdsa key pair.
Enter file in which to save the key (/home/grawity/.ssh/tmp/ec):

0.3.0: default key length not valid

Docs say that ECDSA P-256 is the default if neither -t nor -b is not specified, but that doesn't seem to be the case:

$ ssh-tpm-keygen
2024/02/26 11:12:10 invalid ecdsa key length: TPM does not support 0 bits

$ ssh-tpm-keygen -t ecdsa
2024/02/26 11:16:39 invalid ecdsa key length: TPM does not support 0 bits

Specifying -t rsa without -b seems to correctly generate a 2048-bit RSA key.

Don't add suffix if user added it already

$ ssh-tpm-keygen
Generating a sealed public/private ecdsa key pair.
Enter file in which to save the key (/home/jc/.ssh/id_ecdsa): /home/jc/.ssh/hh-8192_ecdsa.tpm
Enter pin (empty for no pin):
Confirm pin:
Your identification has been saved in /home/jc/.ssh/hh-8192_ecdsa.tpm.tpm

Expected. Your identification has been saved in /home/jc/.ssh/hh-8192_ecdsa.tpm

agent-forwarding does not work with certificates

it will take me a few hours to get to the bottom of it, but it looks like when you use this agent with an ssh pki, agent forwarding appears to cause the pubkey itself, not the certificate to get forwarded.
here is a scenario.
I have User machine A, and hosts B and C
user A has tpm user keys while B and C trust the CA which has signed A's tpm pubkey

from my user on machine A I will ssh -Av B.local
i can confirm from the output that my certificate is approved and I login without a password. within this session I now
ssh -v C.local this authorization fails. If I move the pubkey to machine C as an authorized_key, then the forwarded agent works.
so it seems to me that ssh-tpm-agent needs to be modified to correctly forward the certificate, as this scheme works as intended when not using the tpm agent.

[0.3.0-1] TPM key is in an old format. Will not load it.

Since upgrading to version 0.3.0-1 from the archlinux repo, ssh-tpm-agent complains about the key being in an old format:

[2024-03-06T17:59:11+0100] [ALPM] upgraded ssh-tpm-agent (0.2.0-2 -> 0.3.0-1)
$ journalctl --user -u ssh-tpm-agent
Mar 09 09:18:06 sunny systemd[838]: Started ssh-tpm-agent service.
Mar 09 09:18:06 sunny ssh-tpm-agent[13577]: time=2024-03-09T09:18:06.309+01:00 level=INFO msg="Activated agent by socket"
Mar 09 09:18:06 sunny ssh-tpm-agent[13577]: time=2024-03-09T09:18:06.312+01:00 level=INFO msg="TPM key is in an old format. Will not load it." key_path=/home/knightshrub/.ssh/id_ecdsa.tpm error="old format on key"

The release notes for 0.3.0 mention this breaking change.
Is there a way to upgrade the key format or do I have to generate a new key?

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.