I want to be able to revoke individual keys. This is not a PreSharedKey situation like a password, where both parties effectively share a single string for authentication. The private key never leaves the authenticating machine, as you're only sending a signature over which will be validated against the public key. So, how are you going to compromise a single key that splitting them increases your security?
When its the former, you'll have to have the private-key encrypted so they're unable to use them encrypted at rest and when its the later, you cannot have your keys added to the agent, making the forwarding redundant in the first place.
Using different keys for different services is overkill most of the time. Generally you need to have one key per host that you use or per any storage location. You can use separate keys for separate services is if you for eg. My ssh key is my gpg auth key.
It's stored on my yubikey requiring a touch each time I use it. I use the same gpg key for talking to anyone, so why wouldn't I do the same with my ssh key? I suppose I could try to build a workflow around host-specific keys somehow derived from my auth key… but I'd need some reason to do so. The Ubuntu Server installer has used this trick for a while to allow people to get their SSH keys imported during initial setup.
Why shouldn't they be? Public keys are perfectly safe to be shared publicly. Otherwise RSA would have very limited value. Just use a public key for github alone. I tend to use a public key per-application. Is it just me or can we not see out public keys in the settings page by design?
Do you hide your main door keyway? Slightly related, but I use age[0] for most of my non-automated file encryption tasks; and one of the neat features it has is the ability to encrypt to a GitHub user's pubkey[1]. Please note that these come with their own pitfalls and precautions you'll need to take to ensure your key's safety! If you consider agent forwarding i'd recommend use of "ssh-add -c" to have your agent at least confirm every use of your private key.
Generally for private key security i'd always use a hardware token. Modern yubikeys are really easy to use and you can even enable touch policy instead of the agent confirmation. The UX for this is still a bit lacking in the tooling though. Looking forwards to when this gets added to git in v2. Setting up pgp for commit signing is such a pain.
Yet since ssh is installed everywhere and I'm using it for git anyways, that's one less setup step to worry about. Is it a pain? At it's most basic, it's just one line of config in. The hard part is keeping track of historical keys and revocations, so that historical commits can be validated if they were made before but not after a revocation.
And when that happens, you immediately run into the problem that time information in git offers zero security, and that the whole operation is moot. All of that and knowing that these devices offer some of the best security out there. Hardware devices like the crypto wallets are a pretty good solution no pun intended , imho. Both very convenient and very secure. Plug in, click button to confirm signing, done.
Nobody is forcing you to use the web of trust with PGP either, if you don't want it. But if you do use keys extensively, it actually helps you: if your boss already verified a customer key, you don't have to re-do the work and meet up in person or ask your boss to send it over before you can use it. Now extend that to a whole network of colleagues, where you configure per-colleague whether you think they properly verify other people's keys, and this whole key distribution problem becomes a lot easier without having to rely on third parties CA system like with https.
Just a small note, this obviously doesn't invalidate the rest of the article! On the other hand, it's very easy to "leak" keys into keyservers by one mistaken command with GPG. Maybe you have backup signing keys or whatever secret project encryption keys - and you would prefer for privacy and obscurity that the "public" halves are not distributed on keyservers.
In this sense, I think GPG continues the culture of a more naive and smaller internet by thinking that most keys want to have their public part online. I can't speak about others, but for myself I use a single gpg key across all my machines, but I use one ssh key for each of my machine. To me a ssh key does not map to me, it maps to me and a machine combination.
If I use an ssh key to sign something then after a few years I replaced that machine, that key is no longer used anywhere, and the verification can start to become tricky I'll certainly remove it from my github, which invalidates the key distribution way proposed by the article. But it will be cool to see where it can go. I mean do you run ssh-keygen on a new machine and have for each computer a separate key pair or do you have one key pair that you copy on every new machine?
I have seen both and using one key pair looks very convenient but also makes me feel a little uneasy. I myself have a key pair for each of my machines. How do you handle it? You can avoid specifying a lot of parameters at each SSH connection by defining aliases, e. Thus, after the initial key setup, connecting to any server with different credentials is no more complex than when using a single key pair. Except for an extra keygen step, the initial setup is not more complex than when using a single key pair, as you have to copy the public keys anyway, which is the more difficult part of the setup.
You might want to look into using. Shell completion over ssh is one of the really nice benefits of sshconfig. After five, I guess you must specifically maintain which secret key is used for each host or hostname pattern. Hendrikto 9 days ago parent prev next [—]. I have one key pair per machine and service. About 20 pairs on my laptop, 15 on my desktop. The other route is to use one hardware key fob with a gpg identity on it and use that as your global method of access.
I use two keypairs, but with no ability to read the private key smartcard. This is what I do as well. Yubikey configured as a smartcard running gpg-agent with enable-ssh-support. You can actually use openssl with RSA keys generated by ssh-keygen to sign also, and this has worked for a long time.
A major problem with doing this is that you have to worry about cross-protocol attacks because there is no namespace parameter like there is with SSH signatures. SSH signatures provide the necessary structure to safely use a single key for multiple purposes.
It doesn't take long to generate an RSA key, though. A dedicated signing key would seem to be the obvious thing to do. Also, ssh keys are not really supposed to be portable across devices like an identity is You have the one your laptop, ipad, phone, work, all bound to an identity.
You don't want to use the same key across multiple devices or locations. PGP ironically, got this right In the case of SSH, if a key is lost or compromised, no big deal: create a new set of keys and distribute the public key s to system s for which you wish to authenticate to.
There's also no need to use the same key for different remote systems you can use specific keys only for a specific remote system making an adversary's task of determining what remote systems you connect to, based on public keys used on such systems if obtained, a bit harder. If the sender's public key, or receipient's private key, are not available, valid, or uncompromised at some future time, then the data are either unreliable or unavailable.
Using SSH for more durable cryptographic transactions is convenient. But it also changes the use-case and environment around SSH.
That will have side-effects. Great idea: easy key distribution and management. Like most p2p ideas, PGP also sucked at this. Terrifying idea: trusting a third party to maintain the metadata about a key and who's identity it represents.
PGP absolutely got this part right: if you modify the contents of the metadata, the hash changes. Basically, if a private key were to point to Myself, and I distributed it widely, then lost it And lets not pretend that a government couldn't coerce Github to add an ssh identity to your account it is owned by Microsoft now, and they have DOD contracts to fulfill. Keybase solved both these issues: easy and intuitive, transparent proofs, along with the rigidity of metadata with pgp keys: if a key owner changes, the pgp key mutates.
Gargyle 9 days ago parent next [—]. Are there resources on the impact of Keybase being bought by Zoom? They place their own controlled device toggles as source of truth instead of those by the browser UI and fail in weird ways if you toggle in-browser.
Same for almost all other similar software as well I tossed them without a second thought after they annoyed me with Stellar. Nobody uses Stellar if they dont have a hidden incentive.
It always had a huge forced marketing vibe. Is there some sucessor to keybase? Motivation disclaimer: I want to dump on Keybase because in the end, even with flawless crypto at first, those organizations always erode the good things down to centralized with platform control again. Reitet00 9 days ago root parent next [—]. Depends on the use case.
How does Keybase address this problem completely? Presumably you could mean that revocation of a known stolen key would be easy to point to, but any PKI can handle this. If you have a PGP key bound to your email: yeehaw woot. Contrast that to an ssh key, which has no bound metadata. And to your point, both systems in isolation are useless. But the first, combined with proofs and a distribution point like keybase, form a complete system.
There is no mechanism to invalidate keys by the domain owner, while it uses email as one of the core identifiers. I purchased a cool domain, which had PGP users who published their keys to various key servers.
Their keys have no expiration, while I'm in control of the domain PGP was good, 30 years ago. But technology has evolved, along with the understanding of the problem. People who want to send me encrypted mail could ask my server for my key, DNSSEC would prevent tempering with that, and if I lose access to the domain, there would be no issue with stale keys from old PGP directories.
As for scalability issues, DNS is perfectly done with caching, etc to handle that easily. Like you, I could say "SSH got this part right" - but no. Again, technology has evolved. The "only" problem would be correlation attacks, and I think that's a big one, in the age of surveillance. Ideally, we'd have something like bitcoin key-derivation from a seed key, where you'd have: - a key you publish to receive encrypted email, - derived public keys, one per server, so that you do not risk correlation attacks This is a great article, because it looks at the ubiquity of SSH keys, and how the technology is better than PGP keys, to advance the problem - say by signing git commits and tags.
I hope we'll also use the advances from other technologies. If you want to invalidate the identity entirely you just upload the revocation certificate. I don't think you understand: the key is not mine, it's from the previous users of that domain, so I can't apply these instructions as I don't have their private keys!
To make things worse, there is no mechanism to let the key server know that the emails associated with these keys are invalid. And I have tried my best to get in touch with maintainers to explain the stupidity of this situation, but there is apparently no way besides revocation certificates to deprecate or delete a key.
Or, if I give a less generous interpretation, maybe they want to keep pretending that PGP still has a lot of users? So a known bad key is associated with my domain, with no way to fix that - except maybe waiting for PGP key servers to die and be finally replaced by something better.
This is why I call that an outdated technology. I'm sure it was good 30 years ago, but it should have evolved. Hmm, what could I do? Maybe change my MX records to move from mailgun to postmark or any other mail provider? Or self host? But that's if we assume the key servers would have to be the same as the MX servers, because of some technological limitations.
If you mean "but what about gmail users" - if gmail servers are under whatever political party you oppose, you've got a much bigger problem, and I don't think there can be a technological solution. So many people in this discussion talking about how this isn't a true alternative to PGP while ignoring the fact that gnupg and all other PGP software are a giant usability trainwreck.
The PGP web of trust is as good as dead, and denialism around the usability issues in gnupg is mostly to blame. I don't think the thing you are referring to ever actually existed. Just like in real life you would trust someone just because someone you trusted trusted them. This is a common strawman and does not represent some sort of weakness in the relatively straightforward certifications provided by stuff that supports OpenPGP. I guess we need better words.
Of course I would trust someone if someone I trusted trusted them - subject to some obvious limitations. That is the essence of a social network. A cryptographic representation of that network is a profoundly powerful concept. Gargyle 9 days ago parent prev next [—].
SSH tooling does not make that any better tbh. Things are being worked on. Watch Sequoia. The ssh-agent protocol has always had the ability to sign data.
It sounds like the new part is being able to verify signatures without needing the private key. If you give ssh-agent some data and a public key then — if it has the corresponding private key — it will return a signature for your data using that private key. It hasn't been able to do it in a meaningful way. I've been patching support for this into ssh-agent for about a decade. Doing so requires three changes to the protocol: 1.
The ability to sign arbitrary data and get back the signed result [1]; normally you get back a hashed result [2]. The ability to decrypt data, this is what you said.
The ability to request your certificates [3] [4] this one is kinda obvious. You can also do anything else that requires you to use your private key to be used, which can include fetching files TLS client certificate authentication. Within the US Government, passwords have been being phased out since , but the requirements for authenticated privilege elevation remain. Is there a benefit to using ssh-agent in this way instead of using gpg-agent as an ssh provider?
You get X. Have you published your ssh-agent patches? Yes, though primarily forge. It was based on an original PKCS 11 support [0] [1]. An old version of the patch is pretty small and available here [2]. I use this more frequently these days via Tcl [4]. The use of ssh-agent may be forbidden at some places, even on personal machines.
I knew a few. And not that it's completely unjustified.. How about gpg-agent? Is that forbidden? IYasha 23 hours ago root parent next [—]. Nobody used or asked about gpg-agent back then The point about ssh-agent was that it stored personal keys in memory of machines shared by multiple users admins, shifters, devs. So everyone had to type in passwords for every "ssh" reply. Hacker News new past comments ask show jobs submit. Sign arbitrary data with your SSH keys agwa. Note : If you have any development extensions installed in Visual Studio Code, like the Python extension, you will have to reinstall these extensions on your server through the Extension Marketplace.
If you have previously installed these plugins in Visual Studio Code, when you search for them again, the Marketplace will say Install on SSH: hostname. Always pay attention to what devlopment context you are in, because this is where Visual Studio Code will install your plugins and create your files. If you try to run your code without these plugins installed, error dialog boxes will appear in the bottom right-hand corner of the screen prompting you to install them on your remote server.
After you have installed these they will likely require you to reload Visual Studio Code. When you relaunch it, it will continue working on the remote server without you having to manually reconnect. Remote execution with an IDE provides many benefits, including the ability to quickly test how your code runs on different operating systems and different hardware specifications.
Mason is currently a Sr. Developer Advocate at DigitalOcean who specializes in cloud infrastructure, distributed systems, and Python.
Where would you like to share this to? Twitter Reddit Hacker News Facebook. Share link Tutorial share link. Sign Up. DigitalOcean home. Community Control Panel. Hacktoberfest Contribute to Open Source. No need to configure another hole into firewalls.
Tectia SSH Client. FileZilla - a free sftp server for Windows. The scp command line interface was designed after the old rcp command in BSD Unix. The scp also usually comes with the OpenSSH package. Basically, this copies one or more files to the given host. If user is given, then they are copied to that account on the host. If no user is supplied, then the same user name as on the client side is assumed.
If path is given, then the files are copied to that directory relative to the given user's home directory. If no path is given, the files are copied to the user's home directory. If the -r option is supplied, then files may be directories, and the given directory and all its subdirectories and files in them recursively are copied.
The sftp command line interface was designed to be similar to the ftp command. The sftp command is typically part of the OpenSSH package. It can use any SSH server as a server, and use remote files over the network as if they were local files. The remote file system can be mounted and unmounted as desired. It is the most convenient way to mount remote files ad hoc, without the need for any configuration by the server administrator.
SSH keys can even fully automate establishing the connection to the server. You will see similar output as shown in the following screenshot. Here my current Pi-hole version is 4.
Run the pihole command with -up , which means update Pi-hole, not bring Pi-hole up…. Got an error in the end : Error: Unable to update package cache. FTL errors out? Thanks for the specific instruction for Chromebook! I just fixed the typo and add a brief instruction on how to open a terminal with the shortcut Ctrl-Alt-T.
0コメント