<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jason Harris</title>
    <description>The latest articles on DEV Community by Jason Harris (@techcraver).</description>
    <link>https://dev.to/techcraver</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F859978%2F6404a56a-aee2-49db-8f0c-412d95f6160d.jpeg</url>
      <title>DEV Community: Jason Harris</title>
      <link>https://dev.to/techcraver</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/techcraver"/>
    <language>en</language>
    <item>
      <title>Join the 1Password Hackathon hosted by Hashnode and compete for $10,000 in prizes</title>
      <dc:creator>Jason Harris</dc:creator>
      <pubDate>Thu, 01 Jun 2023 22:13:07 +0000</pubDate>
      <link>https://dev.to/1password/join-the-1password-hackathon-hosted-by-hashnode-and-compete-for-10000-in-prizes-4lpo</link>
      <guid>https://dev.to/1password/join-the-1password-hackathon-hosted-by-hashnode-and-compete-for-10000-in-prizes-4lpo</guid>
      <description>&lt;p&gt;&lt;em&gt;We love hackathons. In fact, that’s where the idea for 1Password came from – with all-night coding sessions that demanded credentials throughout the process.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hackathons are high-energy, creative marathons that serve as a playground for innovation and collaboration, and often result in exciting projects that are a joy to deliver. That’s why we’re excited to announce the first virtual &lt;a href="https://hashnode.com/hackathons/1password" rel="noopener noreferrer"&gt;1Password Hackathon&lt;/a&gt; hosted by Hashnode.&lt;/p&gt;

&lt;p&gt;Taking place June 1st through June 30th, participants will compete for a chance to win $10,000 in cash prizes by building with &lt;a href="https://1password.com/developers" rel="noopener noreferrer"&gt;1Password Developer Tools&lt;/a&gt; and &lt;a href="https://passage.1password.com/" rel="noopener noreferrer"&gt;Passage by 1Password&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;As much fun as in-person hackathons are, we’re also big fans of virtual ones that are global in scope and inclusive of all skill levels. If you’re a developer looking to sharpen your skills, network with like-minded individuals, and craft something extraordinary, the Hashnode Hackathon should be on your list. There are 10,000 reasons why – and utilizing 1Password Developer Tools and Passage can make your experience even better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your mission – and the tools in your toolbelt
&lt;/h2&gt;

&lt;p&gt;1Password Developer Tools brings the speed and security of biometrics to your dev workflows. Passage unlocks passwordless sign-in – powered by passkeys – for your users. &lt;strong&gt;Hackathon participants will receive two free months of 1Password and 1Password Developer Tools, including Shell Plugins and 1Password CLI for new customers&lt;/strong&gt;. For Passage, the free tier will suffice for hackathon purposes.&lt;/p&gt;

&lt;p&gt;Let’s talk details. For the hackathon event, we’re challenging you to build with or on top of these tools:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://docs.passage.id/getting-started/quickstart" rel="noopener noreferrer"&gt;Passage by 1Password&lt;/a&gt;: The easiest way to implement passkey authentication in your app or website.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.1password.com/docs/cli/shell-plugins" rel="noopener noreferrer"&gt;1Password Shell Plugins&lt;/a&gt;: Eliminate API access keys stored on disc and securely authenticate any CLI with your fingerprint, Apple Watch, or other biometrics.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.1password.com/docs/cli" rel="noopener noreferrer"&gt;1Password CLI&lt;/a&gt;: Automate administrative tasks, securely provision secrets across development environments, and use biometrics to authenticate in the terminal.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What are 1Password Developer Tools?
&lt;/h2&gt;

&lt;p&gt;1Password is a password management platform used extensively in the developer community, in part because of features designed specifically for developers.&lt;/p&gt;

&lt;p&gt;With 1Password Developer Tools, you can securely store passwords, API keys, and other secrets, then access them in your code or easily share with your team members. This not only makes your project more secure but also simplifies collaboration.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Passage by 1Password?
&lt;/h2&gt;

&lt;p&gt;Passage allows you to implement seamless passwordless authentication in your app or website with just a few lines of code. Eliminate passwords for good with Passkey Complete, a standalone solution that defaults to passkeys with fallbacks to other passwordless methods. Or use Passkey Flex to add support for passkeys alongside your existing password-based auth flow. Passage takes care of authentication so you can focus on the core logic of your hackathon project.&lt;/p&gt;

&lt;p&gt;During the June Hackathon, we invite you to show off your skills and submit a project that expands Passage by integrating it with other platforms, like &lt;a href="https://supabase.com/docs/guides/integrations/passage" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt;. Or, you could build one that shows a creative way &lt;a href="https://docs.passage.id/getting-started/quickstart" rel="noopener noreferrer"&gt;Passage&lt;/a&gt; can be used to streamline sign-in for your application or service.&lt;/p&gt;

&lt;p&gt;Want to really impress the judges? Make your project multi-platform and show how Passage works across systems and devices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Examples from the community
&lt;/h2&gt;

&lt;p&gt;1Password wouldn’t be 1Password without the developer community. In fact, more than half of our published Shell Plugins have been written by the community!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpm6fvylafi923uqqn9if.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpm6fvylafi923uqqn9if.gif" alt="Stripe API key being saved in 1Password directly from VS Code with the 1Password VS Code extension"&gt;&lt;/a&gt;&lt;br&gt;
We’ve seen some amazing projects and integrations built on the 1Password CLI, including the &lt;a href="https://developer.1password.com/docs/vscode/" rel="noopener noreferrer"&gt;VS Code integration&lt;/a&gt; and a community-written &lt;a href="https://blog.1password.com/1password-jetbrains/" rel="noopener noreferrer"&gt;JetBrains integration&lt;/a&gt;. And we can’t wait to see what Hackathon participants build to extend Passage to new frameworks and platforms. If you’re looking for inspiration, we’d love to see more integrations like the newly published &lt;a href="https://supabase.com/docs/guides/integrations/passage" rel="noopener noreferrer"&gt;Supabase package&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And for even more projects contributed by the community, see the &lt;a href="https://developer.1password.com/community" rel="noopener noreferrer"&gt;1Password Community Showcase&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;To get started, &lt;a href="https://hashnode.com/hackathons/1password" rel="noopener noreferrer"&gt;register to participate with Hashnode&lt;/a&gt;. You’ll receive an email containing a coupon code and instructions to redeem your two free months of 1Password for new customers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get support from the 1Password community
&lt;/h2&gt;

&lt;p&gt;Need some guidance to help you get started – or to stay on track? We’re here to help.&lt;/p&gt;

&lt;p&gt;Chat with other devs in our &lt;a href="https://join.slack.com/t/1password-devs/shared_invite/zt-1halo11ps-6o9pEv96xZ3LtX_VE0fJQA" rel="noopener noreferrer"&gt;Developer Slack community&lt;/a&gt; and on the &lt;a href="https://discord.com/invite/hashnode" rel="noopener noreferrer"&gt;Hashnode Discord&lt;/a&gt;.&lt;br&gt;
Set up a pair programming session with our engineers. To request a session, see the instructions in the Discord channel.&lt;br&gt;
We’ll have two live events in June including the &lt;a href="https://www.youtube.com/watch?v=CJlI0BEt384" rel="noopener noreferrer"&gt;Hashnode Workshop&lt;/a&gt; with demos and Q&amp;amp;A on June 7th and a &lt;a href="https://1password.zoom.us/meeting/register/tJwkfuyhrD4pGdCs_NCEPWvWmAIzmUlFJEat" rel="noopener noreferrer"&gt;Community Office Hour on June 23rd&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Good luck to all participants!
&lt;/h2&gt;

&lt;p&gt;This hackathon is an exciting community project and we look forward to meeting and learning from you! We’ll be watching all the action on Discord, our Developer Slack, and GitHub. Please be sure to use #Buildwith1Password so we can help spread the word and profile your work!&lt;/p&gt;

&lt;p&gt;Let’s get hacking!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Please note, this hackathon is a Hashnode contest and terms and conditions apply. You can find all applicable details on &lt;a href="https://hashnode.com/hackathons/1password" rel="noopener noreferrer"&gt;the contest website&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hackathon</category>
      <category>programming</category>
      <category>security</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Unlock any CLI using biometrics with 1Password Shell Plugins</title>
      <dc:creator>Jason Harris</dc:creator>
      <pubDate>Wed, 07 Dec 2022 17:49:08 +0000</pubDate>
      <link>https://dev.to/1password/unlock-any-cli-using-biometrics-with-1password-shell-plugins-n1</link>
      <guid>https://dev.to/1password/unlock-any-cli-using-biometrics-with-1password-shell-plugins-n1</guid>
      <description>&lt;p&gt;I love Touch ID. When I use it to log in to a site or authorize a purchase, authentication just kind of &lt;em&gt;happens&lt;/em&gt;. It doesn’t feel futuristic anymore, but it does feel like the present. It’s the modern computing experience.&lt;br&gt;
​&lt;br&gt;
Then I open my terminal, and I'm transported right back to the past. Why can't devs have that modern experience?&lt;br&gt;
​&lt;br&gt;
I know I'm not alone. When we introduced Touch ID support for &lt;a href="https://blog.1password.com/1password-cli-2_0/" rel="noopener noreferrer"&gt;1Password CLI 2.0&lt;/a&gt;, one of the most frequent pieces of feedback we heard was: Can we have touch ID for &lt;em&gt;all&lt;/em&gt; CLIs? &lt;br&gt;
​&lt;br&gt;
So, about that. &lt;br&gt;
​&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing 1Password Shell Plugins
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Figuomkv9cpgr59h73mt7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Figuomkv9cpgr59h73mt7.gif" alt="Image description" width="1300" height="813"&gt;&lt;/a&gt;&lt;br&gt;
​&lt;br&gt;
We use CLIs to perform quick actions from the comfort of our terminals and automate recurring tasks. You might use the &lt;a href="https://about.gitlab.com/blog/2022/12/07/introducing-the-gitlab-cli/" rel="noopener noreferrer"&gt;GitLab CLI&lt;/a&gt; to submit your code in a merge request, so the team can review it and include it in the next release, for example. Many other developer platforms like &lt;a href="https://aws.amazon.com/cli/" rel="noopener noreferrer"&gt;AWS&lt;/a&gt;, &lt;a href="https://stripe.com/docs/stripe-cli" rel="noopener noreferrer"&gt;Stripe&lt;/a&gt;, &lt;a href="https://docs.sentry.io/product/cli/" rel="noopener noreferrer"&gt;Sentry&lt;/a&gt;, and &lt;a href="https://circleci.com/docs/local-cli/" rel="noopener noreferrer"&gt;CircleCI&lt;/a&gt; offer CLIs as well.&lt;br&gt;
​&lt;br&gt;
Connecting a CLI to your online account often involves generating API access keys in a browser, then pasting those values into the terminal. Those credentials are usually saved in a plaintext config file that gives the CLI persistent access to your account, even after reboots. But if an attacker or process gains access to your system, they have the same level of access to your account that you do. &lt;br&gt;
​&lt;br&gt;
We built &lt;a href="https://developer.1password.com/docs/cli/shell-plugins" rel="noopener noreferrer"&gt;1Password Shell Plugins&lt;/a&gt; so you can securely store all of your access keys in encrypted 1Password vaults, rather than on disk. When you use a Shell Plugin for a particular service, access to the associated API keys is restricted to your specific terminal session. &lt;br&gt;
​&lt;br&gt;
Because they're saved in 1Password, you can securely sign in to any CLI with your fingerprint or another form of biometrics. If the service supports it, MFA codes can be filled automatically  – so there’s no need to pull out your phone multiple times every day.&lt;br&gt;
​&lt;br&gt;
In fact, there’s no need to type &lt;em&gt;anything&lt;/em&gt;. No plaintext, no typing passwords, no hassle – you can stay in the zone and focus on the task at hand. &lt;br&gt;
​&lt;/p&gt;

&lt;h2&gt;
  
  
  Extensibility built in
&lt;/h2&gt;

&lt;p&gt;​&lt;br&gt;
We’ve already built Shell Plugins for many popular CLIs, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.1password.com/docs/cli/shell-plugins/gitlab" rel="noopener noreferrer"&gt;GitLab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.1password.com/docs/cli/shell-plugins/circleci" rel="noopener noreferrer"&gt;CircleCI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.1password.com/docs/cli/shell-plugins/aws" rel="noopener noreferrer"&gt;Amazon Web Services&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.1password.com/docs/cli/shell-plugins/sentry" rel="noopener noreferrer"&gt;Sentry&lt;/a&gt; (Get $240 in Sentry credits with code “1Password”) &lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.1password.com/docs/cli/shell-plugins/stripe" rel="noopener noreferrer"&gt;Stripe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.1password.com/docs/cli/shell-plugins/twilio" rel="noopener noreferrer"&gt;Twilio&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.1password.com/docs/cli/shell-plugins/github" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
​&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are &lt;a href="https://developer.1password.com/docs/cli/shell-plugins" rel="noopener noreferrer"&gt;many more pre-built integrations&lt;/a&gt;, but you’re not limited to the ones we built. You can build your own, for any CLI. &lt;br&gt;
​&lt;br&gt;
Shell Plugins are fully extensible and aren’t restricted to specific services. If you don't see an integration you need, you can join the open source project (currently in beta) and &lt;a href="https://developer.1password.com/docs/cli/shell-plugins/contribute/" rel="noopener noreferrer"&gt;contribute your own&lt;/a&gt;. &lt;br&gt;
​&lt;br&gt;
Want to add MFA support to an existing Shell Plugin? You can do that too.&lt;br&gt;
​&lt;br&gt;
​&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Many of our users rely on GitLab to shorten code review cycles, increase their developer productivity and strengthen overall security at every step. 1Password’s latest rollout is an important development in that last bucket. Launching Shell Plugins will help ensure developers can access our tools in their terminals as quickly and securely as possible.&lt;/em&gt; – Kai Armstrong, senior product manager, GitLab&lt;br&gt;
​&lt;/p&gt;
&lt;h2&gt;
  
  
  Your keys, but portable
&lt;/h2&gt;

&lt;p&gt;​&lt;br&gt;
Storing your keys in 1Password means you can use them &lt;em&gt;everywhere&lt;/em&gt;. If you switch to a different machine, system, or environment, the process is exactly the same. &lt;br&gt;
​&lt;br&gt;
Just install and configure Shell Plugins on your machine, then use biometrics to grant access to your key in 1Password. If the plugin supports MFA, you can use 1Password to autofill the codes.&lt;br&gt;
​&lt;br&gt;
This all makes setup, developer onboarding, and collaboration simpler. If new teammates are in the relevant group in 1Password, they already have the permissions they need to access the shared credentials and contribute immediately. All they have to do is install the &lt;a href="https://1password.com/downloads/command-line/" rel="noopener noreferrer"&gt;1Password CLI&lt;/a&gt; and the appropriate Shell Plugins.&lt;br&gt;
​&lt;/p&gt;
&lt;h2&gt;
  
  
  How Shell Plugins work
&lt;/h2&gt;

&lt;p&gt;​&lt;br&gt;
Once you've set up 1Password CLI, you can install a supported Shell Plugin with a single command. For example, to install the plugin for GitLab, you would run:&lt;br&gt;
​&lt;br&gt;
&lt;code&gt;op plugin init glab&lt;/code&gt;&lt;br&gt;
​&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F27flmwv6vc6oclzp9r8o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F27flmwv6vc6oclzp9r8o.png" alt="Image description" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
​&lt;br&gt;
During the configuration process, you can import existing credentials from your config file or create new credentials in 1Password. &lt;br&gt;
​&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7jjcspqd1epzjnhd2ouc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7jjcspqd1epzjnhd2ouc.png" alt="Image description" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
​&lt;br&gt;
At this point, your credentials are safely stored in 1Password, so you can remove them from your disk. &lt;br&gt;
​&lt;br&gt;
&lt;a href="https://developer.1password.com/docs/cli/shell-plugins/" rel="noopener noreferrer"&gt;Check out the developer docs&lt;/a&gt; to learn more about Shell Plugins.&lt;br&gt;
​&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0ywimmrzua7h9uyz86a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm0ywimmrzua7h9uyz86a.png" alt="Image description" width="800" height="500"&gt;&lt;/a&gt;&lt;br&gt;
​&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing CI/CD integrations
&lt;/h2&gt;

&lt;p&gt;​&lt;br&gt;
One more thing. When you’re setting up a CI/CD workflow, you often need to manually enter secrets by visiting the settings page of the tool you’re using. But now you can store those secrets in 1Password, too. &lt;br&gt;
​&lt;br&gt;
You can access them directly within your CI/CD tools – and reference their location in 1Password directly within the job that requires them – via new integrations for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://developer.1password.com/docs/ci-cd/circle-ci" rel="noopener noreferrer"&gt;CircleCI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://developer.1password.com/docs/ci-cd/jenkins" rel="noopener noreferrer"&gt;Jenkins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.1password.com/docs/ci-cd/github-actions" rel="noopener noreferrer"&gt;GitHub Actions&lt;/a&gt;
​&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Again, feel free to &lt;a href="https://developer.1password.com/docs/ci-cd/" rel="noopener noreferrer"&gt;jump into the documentation&lt;/a&gt; to get started.&lt;br&gt;
​&lt;/p&gt;

&lt;h2&gt;
  
  
  Securing the software development life cycle
&lt;/h2&gt;

&lt;p&gt;​&lt;br&gt;
Our goal is to bring this same level of security and ease of use to the entire &lt;a href="https://1password.com/developers/" rel="noopener noreferrer"&gt;software development life cycle&lt;/a&gt;. My colleague, Marc Mackenbach, has written about &lt;a href="https://blog.1password.com/developers-deserve-great-ux/" rel="noopener noreferrer"&gt;how far the developer user experience has to go&lt;/a&gt; before it catches up with the consumer experience in terms of both security and UX.&lt;br&gt;
​&lt;br&gt;
We're working on that. Check out &lt;a href="https://1password.com/developers/" rel="noopener noreferrer"&gt;1Password.com/developers&lt;/a&gt; for a quick overview of everything we’re building to secure developer workflows. In the meantime, feel free to &lt;a href="https://developer.1password.com/docs/cli/shell-plugins/" rel="noopener noreferrer"&gt;start exploring the Shell Plugins documentation&lt;/a&gt;. &lt;br&gt;
​&lt;br&gt;
And maybe keep your phone in your pocket. You won’t need it nearly as often anymore. 😉&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>ruby</category>
      <category>python</category>
    </item>
    <item>
      <title>1Password for SSH changed the way I work</title>
      <dc:creator>Jason Harris</dc:creator>
      <pubDate>Mon, 09 May 2022 17:12:06 +0000</pubDate>
      <link>https://dev.to/1password/1password-for-ssh-changed-the-way-i-work-2501</link>
      <guid>https://dev.to/1password/1password-for-ssh-changed-the-way-i-work-2501</guid>
      <description>&lt;p&gt;&lt;a href="https://blog.1password.com/1password-ssh-agent/"&gt;1Password for SSH&lt;/a&gt; was shared with the world last month. I have been using it since it was available for internal beta. I knew it would improve my endpoint security. I didn’t expect it to change &lt;del&gt;the way I generated, stored and used SSH keys&lt;/del&gt; the way I work.&lt;/p&gt;

&lt;p&gt;Let me take a step back.&lt;/p&gt;

&lt;p&gt;The first time I used SSH, I connected my college’s &lt;a href="https://www.csee.umbc.edu/courses/undergraduate/341/fall04/hood/notes/ssh/"&gt;global lab linux server&lt;/a&gt; with &lt;a href="https://www.putty.org/"&gt;PuTTY&lt;/a&gt;. I used a username and password to authenticate and never really appreciated &lt;a href="https://datatracker.ietf.org/doc/html/rfc4253"&gt;the magic that made it all work&lt;/a&gt;. It was a step away from the familiar world of FTP and RDP.&lt;/p&gt;

&lt;p&gt;SSH later became an integral part of my developer experience when my job switched from &lt;a href="https://subversion.apache.org/"&gt;Subversion&lt;/a&gt; to &lt;a href="https://lwn.net/Articles/165127/"&gt;Git&lt;/a&gt;. I was a Jr. Developer at the time and struggled to generate an SSH key. Another developer on the team generated an RSA key pair for me and shared it on a thumb drive. It was some years later before I realized &lt;a href="https://www.freebsd.org/news/2012-compromise/"&gt;this was less than ideal&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Eventually, I fell into a routine. I would get a new laptop, generate a private key – sometimes I would even use a passphrase – and upload the new key to all the services I used (GitHub, VPS, etc.). I used the one-key-per-device pattern and repeated the process for my phone and other devices. Occasionally, I’d pull a device from cold storage for something I forgot about.&lt;/p&gt;

&lt;p&gt;The problem was that each SSH key represented one of my devices; it had no purpose attached to it. I used the same keys for work, open source contributions, file servers and a lot more. When I unlocked a key for one use, I unlocked it for all uses.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;1Password for SSH has entered the chat&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://developer.1password.com/docs/ssh/"&gt;1Password SSH Agent&lt;/a&gt; has a stricter authorization model than the OpenSSH Agent[1] defaults[2]. Instead of a key either being available or unavailable, a key has an authorized session. An authorized session consists of the key pair and either a terminal session or application. I wanted to be able to deliberately authorize a set of actions for my current context (e.g., work or open source).&lt;/p&gt;

&lt;p&gt;Thus, a new way of working.&lt;/p&gt;

&lt;p&gt;I generated a new key pair for each of my use cases. &lt;a href="https://support.1password.com/getting-started-browser/"&gt;1Password in the browser&lt;/a&gt; made this really easy by autofilling the new key in the GitHub and Gitlab public key forms. Now, when it’s time to get to work, I open my terminal and run a git fetch. 1Password prompts for my fingerprint and I approve the usage of my Work SSH key.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zIUtI7qA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8vwhpcdsxzbf3cgnbt7y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zIUtI7qA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8vwhpcdsxzbf3cgnbt7y.png" alt="Image description" width="370" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m not prompted again while actively using my laptop. When it’s time to switch to an &lt;a href="https://github.com/neon-bindings/neon"&gt;open source project&lt;/a&gt;, I’m seamlessly prompted for my GitHub key.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vsXiky6W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tmo7e9ygcnwdw34vwhf0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vsXiky6W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tmo7e9ygcnwdw34vwhf0.png" alt="Image description" width="370" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A little later, when I need to update my blog, I pop open a new terminal tab and start an SSH session. I forward my SSH Agent with &lt;code&gt;ssh -A&lt;/code&gt; so that I can perform a &lt;code&gt;git pull&lt;/code&gt; while I’m there[3]. When I’m done, I &lt;code&gt;exit&lt;/code&gt; the terminal session, deauthorizing it from the 1Password SSH Agent.&lt;/p&gt;

&lt;p&gt;Now, generating SSH keys is no longer part of my new device flow! All of my SSH keys are saved in 1Password and synchronized across my devices.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kWWh4T05--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0elf7hbrtnzccybiuhwd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kWWh4T05--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0elf7hbrtnzccybiuhwd.png" alt="Image description" width="293" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m really excited for Git’s recent addition of &lt;a href="https://github.com/git/git/blob/master/Documentation/RelNotes/2.34.0.txt"&gt;commit signing with SSH keys&lt;/a&gt;. It already &lt;a href="https://git-scm.com/docs/git-config#Documentation/git-config.txt-gpgformat"&gt;works with 1Password SSH&lt;/a&gt; and I can’t wait for &lt;a href="https://github.com/github/feedback/discussions/7744"&gt;GitHub&lt;/a&gt; and &lt;a href="https://gitlab.com/gitlab-org/gitlab/-/issues/343879"&gt;Gitlab&lt;/a&gt; to support verification!&lt;/p&gt;




&lt;p&gt;[1] &lt;a href="https://www.openssh.com/agent-restrict.html"&gt;SSH agent restriction&lt;/a&gt; looks really cool! ↩︎&lt;/p&gt;

&lt;p&gt;[2] Similar functionality is available with &lt;code&gt;ssh-add -c&lt;/code&gt;. ↩︎&lt;/p&gt;

&lt;p&gt;[3] Eventually I’ll get around setting up a &lt;a href="https://docs.github.com/en/actions"&gt;GitHub Action&lt;/a&gt;. At least, that’s what I tell myself. ↩︎&lt;/p&gt;

&lt;p&gt;This &lt;a href="https://blog.1password.com/1password-ssh-changed-how-i-work/"&gt;post originally&lt;/a&gt; written by K.J. Valincik, Senior Staff Developer at 1Password.&lt;/p&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
