{"id":4007,"date":"2024-04-04T20:36:16","date_gmt":"2024-04-04T11:36:16","guid":{"rendered":"https:\/\/matoken.org\/blog\/?p=4007"},"modified":"2024-04-04T20:36:18","modified_gmt":"2024-04-04T11:36:18","slug":"age-that-can-encrypt-and-decrypt-using-ssh-keys","status":"publish","type":"post","link":"https:\/\/matoken.org\/blog\/2024\/04\/04\/age-that-can-encrypt-and-decrypt-using-ssh-keys\/","title":{"rendered":"SSH\u9375\u3092\u4f7f\u3063\u305f\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316\u304c\u51fa\u6765\u308b age"},"content":{"rendered":"<div id=\"preamble\">\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>age \u3068\u3044\u3046\u6697\u53f7\u5316\u30c4\u30fc\u30eb\u3092\u77e5\u308a\u307e\u3057\u305f\uff0e\u3053\u306e age \u3067\u306f ssh \u306e\u516c\u958b\u9375\u3092\u4f7f\u3063\u3066\u6697\u53f7\u5316\uff0c\u79d8\u5bc6\u9375\u3067\u5fa9\u53f7\u5316\u304c\u51fa\u6765\u308b\u306e\u304c\u9762\u767d\u305d\u3046\u306a\u306e\u3067\u5c11\u3057\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/github.com\/FiloSottile\/age\/raw\/main\/logo\/logo.svg\" alt=\"logo\"\/><\/span><\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li><a href=\"https:\/\/github.com\/FiloSottile\/age\">FiloSottile\/age: A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.<\/a><\/li>\n<\/ul>\n<\/div>\n<p><!--more--><\/p>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_install\">install<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>\u4eca\u56de\u306f Upstream \u3068\u30d0\u30fc\u30b8\u30e7\u30f3\u306f\u540c\u3058\u3060\u3057 Raspberry Pi OS bookworm armhf \u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u5229\u7528\u3057\u307e\u3057\u305f\uff0e<br \/>\ngo install \u3067\u306e\u5c0e\u5165\u3082 Go \u304c\u5165\u3063\u3066\u3044\u308c\u3070\u7c21\u5358\uff0cGitHub \u306e <a href=\"https:\/\/github.com\/FiloSottile\/age\/releases\">releases<\/a> \u306b\u3082\u3044\u304f\u3064\u304b\u306e\u30d0\u30a4\u30ca\u30ea\u304c\u3042\u308a\u307e\u3059\uff0e<br \/>\n\u305d\u306e\u4ed6\u5404\u7a2e\u74b0\u5883\u306b\u3082\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u3042\u308b\u3088\u3046\u3067\u3059\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"title\">Raspberry Pi OS \u3078\u306e age \u30d1\u30c3\u30b1\u30fc\u30b8\u5c0e\u5165<\/div>\n<div class=\"content\">\n<pre>$ sudo apt install age\n$ age --version\n1.1.1\n$ dpkg-query -W age\nage     1.1.1-1+b3\n$ age\nUsage:\n    age [--encrypt] (-r RECIPIENT | -R PATH)... [--armor] [-o OUTPUT] [INPUT]\n    age [--encrypt] --passphrase [--armor] [-o OUTPUT] [INPUT]\n    age --decrypt [-i PATH]... [-o OUTPUT] [INPUT]\n\nOptions:\n    -e, --encrypt               Encrypt the input to the output. Default if omitted.\n    -d, --decrypt               Decrypt the input to the output.\n    -o, --output OUTPUT         Write the result to the file at path OUTPUT.\n    -a, --armor                 Encrypt to a PEM encoded format.\n    -p, --passphrase            Encrypt with a passphrase.\n    -r, --recipient RECIPIENT   Encrypt to the specified RECIPIENT. Can be repeated.\n    -R, --recipients-file PATH  Encrypt to recipients listed at PATH. Can be repeated.\n    -i, --identity PATH         Use the identity file at PATH. Can be repeated.\n\nINPUT defaults to standard input, and OUTPUT defaults to standard output.\nIf OUTPUT exists, it will be overwritten.\n\nRECIPIENT can be an age public key generated by age-keygen (\"age1...\")\nor an SSH public key (\"ssh-ed25519 AAAA...\", \"ssh-rsa AAAA...\").\n\nRecipient files contain one or more recipients, one per line. Empty lines\nand lines starting with \"#\" are ignored as comments. \"-\" may be used to\nread recipients from standard input.\n\nIdentity files contain one or more secret keys (\"AGE-SECRET-KEY-1...\"),\none per line, or an SSH key. Empty lines and lines starting with \"#\" are\nignored as comments. Passphrase encrypted age files can be used as\nidentity files. Multiple key files can be provided, and any unused ones\nwill be ignored. \"-\" may be used to read identities from standard input.\n\nWhen --encrypt is specified explicitly, -i can also be used to encrypt to an\nidentity file symmetrically, instead or in addition to normal recipients.\n\nExample:\n    $ age-keygen -o key.txt\n    Public key: age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p\n    $ tar cvz ~\/data | age -r age1ql3z7hjy54pw3hyww5ayyfg7zqgvc7w3j2elw8zmrj2kg5sfn9aqmcac8p &gt; data.tar.gz.age\n    $ age --decrypt -i key.txt -o data.tar.gz data.tar.gz.age<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_age_key_\u3067\u306e\u5229\u7528\">age key \u3067\u306e\u5229\u7528<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p><code>age-keygen<\/code> \u30b3\u30de\u30f3\u30c9\u3067 age \u7528\u306e\u9375\u30da\u30a2\u304c\u751f\u6210\u3067\u304d\u307e\u3059\uff0e <code>public key<\/code> \u3092\u5171\u6709\u3057\u307e\u3059\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"title\">\u9375\u306e\u751f\u6210<\/div>\n<div class=\"content\">\n<pre>$ age-keygen -o key.txt\nPublic key: age1asle7pc9uj5n3fxamxst286ejh24yv5nut0qtedmadsxdm38egvs6ez9jr\n$ cat key.txt\n# created: 2024-03-30T04:44:49+09:00\n# public key: age1asle7pc9uj5n3fxamxst286ejh24yv5nut0qtedmadsxdm38egvs6ez9jr\nAGE-SECRET-KEY-1VZVZ0VXNSP7D3XN6X545MT7EX89S2Z7F68G6CG0RZ9WKMGN0CW4STSVM26\n$ age-keygen -o key2.txt\nPublic key: age1vz7kedcgzvzk4n4ke50wdxthll9g3muhgwlv3vz37g926frzjvvst777qe<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>age <code>public key<\/code> \u3067\u6697\u53f7\u5316\uff0cage secret key \u3067\u5fa9\u53f7\u5316\u3057\u307e\u3059\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"title\">\u9375\u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316<\/div>\n<div class=\"content\">\n<pre>$ echo 'plain' &gt; data\n$ age -o data.age -r age1asle7pc9uj5n3fxamxst286ejh24yv5nut0qtedmadsxdm38egvs6ez9jr data <b class=\"conum\">(1)<\/b>\n$ age --decrypt -i key.txt -o - data.age <b class=\"conum\">(2)<\/b>\nplain\n$ age -o data.age -r age1asle7pc9uj5n3fxamxst286ejh24yv5nut0qtedmadsxdm38egvs6ez9jr \\\n    -r age1vz7kedcgzvzk4n4ke50wdxthll9g3muhgwlv3vz37g926frzjvvst777qe data <b class=\"conum\">(3)<\/b>\n$ age --decrypt -i key.txt -o - data.age <b class=\"conum\">(4)<\/b>\nplain\n$ age --decrypt -i key2.txt -o - data.age <b class=\"conum\">(5)<\/b>\nplain<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3067\u6697\u53f7\u5316\u5fa9\u53f7\u5316\">\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316<\/h2>\n<div class=\"sectionbody\">\n<div class=\"listingblock\">\n<div class=\"title\">\u6697\u53f7\u5316<\/div>\n<div class=\"content\">\n<pre>$ age --passphrase -o data.age data <b class=\"conum\">(1)<\/b>\nEnter passphrase (leave empty to autogenerate a secure one):\nConfirm passphrase:\n$ age --passphrase -o data.age data <b class=\"conum\">(2)<\/b>\nEnter passphrase (leave empty to autogenerate a secure one):\nage: using autogenerated passphrase \"resist-host-rabbit-rapid-choose-slender-legal-ramp-forward-scare\"\n$ age --passphrase --armor data <b class=\"conum\">(3)<\/b>\nage: using autogenerated passphrase \"what-open-rifle-junior-meadow-grass-hurdle-cigar-hybrid-slide\"\n-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNjcnlwdCBxcGxLRjNySGliS3ZyUmUz\nTm5MMnVRIDE4ClQzVUhlUmJlSGQrSmdUcU1xaEo0ZkFUcGpLWGZpUnBEbjNPbDMy\nWDk4ZHcKLS0tIFRic2twRVFOVkJ3a2Y3UWZ3WEdxcG5iSi9qWk5TU1UydWllVG1G\nNlBmMkkKh1ok+t0EGZrBXEQujdb6JQLcIGyZXcnvJrAetajKdVImFUCHXu0=\n-----END AGE ENCRYPTED FILE-----<\/pre>\n<\/div>\n<\/div>\n<div class=\"colist arabic\">\n<ol>\n<li>\u81ea\u5206\u3067\u6c7a\u3081\u305f\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3067\u6697\u53f7\u5316\u3057\u307e\u3059<\/li>\n<li>\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u5165\u529b\u3057\u306a\u3044\u3068 age \u304c\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u81ea\u52d5\u751f\u6210\u3057\u3066\u304f\u308c\u307e\u3059\uff0e<\/li>\n<li>-a\/&#8211;armor \u30aa\u30d7\u30b7\u30e7\u30f3\u3067 PEM \u5f62\u5f0f\u3067\u51fa\u529b\uff0e<\/li>\n<\/ol>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"title\">\u5fa9\u53f7\u5316<\/div>\n<div class=\"content\">\n<pre>$ age --decrypt -o - .\/data.age\nEnter passphrase:\nplain\n$ echo '-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNjcnlwdCBxcGxLRjNySGliS3ZyUmUz\nTm5MMnVRIDE4ClQzVUhlUmJlSGQrSmdUcU1xaEo0ZkFUcGpLWGZpUnBEbjNPbDMy\nWDk4ZHcKLS0tIFRic2twRVFOVkJ3a2Y3UWZ3WEdxcG5iSi9qWk5TU1UydWllVG1G\nNlBmMkkKh1ok+t0EGZrBXEQujdb6JQLcIGyZXcnvJrAetajKdVImFUCHXu0=\n-----END AGE ENCRYPTED FILE-----' | age --decrypt -o -\nEnter passphrase:\nplain<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_ssh\u9375\u3067\u6697\u53f7\u5316\u5fa9\u53f7\u5316\">ssh\u9375\u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>\u3053\u308c\u3092\u8a66\u3057\u305f\u304b\u3063\u305f\u306e\u3067\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"title\">ed25519 \u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316<\/div>\n<div class=\"content\">\n<pre>$ age --armor -R ~\/.ssh\/id_ed25519.pub data\n-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IGVSY0tCZyBZRUJD\nNUZ6OWpQWDlzK2JKbmszaVp1ak9TQ0NZWkxoM0JuRlhtTm1hNVdFCjZqV0RlRldI\ncjY4TDJJR1hRckxNUkw2QmoreGVoRURzRGhRYllZUjBXck0KLS0tIEJBaFVXa3J0\nRHFobkVzUnRLaDZaUDVHdnpTbklHYmozQThKKzVKT3haUkEKaRkef04BHGL2sDPy\nB9hl8CCpgJ57fOZtLBG8tPruAz5uASNhJss=\n-----END AGE ENCRYPTED FILE-----\n$ echo '-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IGVSY0tCZyBZRUJD\nNUZ6OWpQWDlzK2JKbmszaVp1ak9TQ0NZWkxoM0JuRlhtTm1hNVdFCjZqV0RlRldI\ncjY4TDJJR1hRckxNUkw2QmoreGVoRURzRGhRYllZUjBXck0KLS0tIEJBaFVXa3J0\nRHFobkVzUnRLaDZaUDVHdnpTbklHYmozQThKKzVKT3haUkEKaRkef04BHGL2sDPy\nB9hl8CCpgJ57fOZtLBG8tPruAz5uASNhJss=\n-----END AGE ENCRYPTED FILE-----' | age -d -i ~\/.ssh\/id_ed25519\nplain<\/pre>\n<\/div>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"title\">RSA \u3067\u6697\u53f7\u5316<\/div>\n<div class=\"content\">\n<pre>$ echo 'plain' | age --armor -R .\/rsa1024.pub\nage: warning: recipients file \".\/rsa1024.pub\": ignoring unsupported SSH key of type \"ssh-rsa\" at line 1\nage: error: failed to parse recipient file \".\/rsa1024.pub\": \".\/rsa1024.pub\": no recipients found\nage: report unexpected or unhelpful errors at https:\/\/filippo.io\/age\/report\n$ echo 'plain' | age --armor -R .\/rsa2048.pub\n-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1yc2EgNXd4UUtBCmxZY2ZKczFr\nMkJ1akc2Y3JkUHQyN0JaRU1RTnN4NHFydjBwZE4vUml4d0JnZ0VQYnVxRUhXRFpx\nWkRCOWxpSG4KTnUzZCsvNmFGSnM0MzNkdEpSRWVyUEl1VVgxOHR3NFd6alJMMUlH\nQ3VYbTZDTDdYNUxoeTdnbE8zNlI5eWpCawpPMTVRZXhoTGNVWHRhRngybkVHVmxE\nQXVTRFJKOEFIVFQwWXFFZHRrdmU4UVhiV0lwbFVtQ0Vzb1ZzTnlBNXc5CjN4VW02\na21MZGxxRmhtY1pOZ1NsQjlBS0RmL1o3M0xNZ0RVQXRXS3pVSDVXS1UramQ5V3Nv\nNWhSZDBaYjhlSWkKTVUzM1dEZzltcWU3SEpPMGV6eG5ucHFqUGZDRWZ0eDNQNTUy\nRmZxdHdXUzBZamlrLzNFaGdWajVTeXZBREF1VwpFN2x4S0VnR0N6WmIxeXFuTjUr\nbGFnCi0tLSAzaytQQktGcHA4dG9OZjhGbGNZY2g1ZktUaHRsemxoNUNxeW9YTkVD\nQ2NJCnEqtAa7v2TJGtQWC2CglKZ9YeX698uiW90pBq13wqwxFxe26eUb\n$ echo 'plain' | age --armor -R .\/rsa3072.pub\n-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1yc2EgZFNIbVJ3CmxTaERheUlS\nRDJ2dE8wVXZrWDRKMStQYkl4SW5RVExYUWlLTHcxVjRFRVBSWEVnQk81TThVaG5u\nQWZRYS9vVlQKZHppT25RYnZKaUFSbm5sSVhMZUVMTG1Fc2FPTUl4aFQvdmVEeXBG\nb1dDQ1loMEdYM0QyKzNIN2V6eStlbkQ2ZQpFeVJJeFovd3FzUzZSS3pNMG9YeEtp\nQm0rYitkeWFIR2N2T05tMHB0RW5TTWRvelBmOXdpN0tjVlhZUS8xWGxJClJBMjk3\nWDV5d3BBaFdWbWtFcjIyWHhHMy93cmsrUTd3cGdwaTAzMTN4M3RaQ0o5cUN3TzRw\ncklrTGpVUVBRSE4KNnA4MHhvMVJ6LzduM0JHaTNKNFZKRURuSjhZNldoV1h2N3Qw\nbTRMZ0xqaVkvOVJVR004a3A1bU9JSU9pK0ErKwpKdmtVcEphWk9zbzJ1eHdOV0k0\nRXpBYm9jY3RneDNJSm9mcWQ4SzY5bERxUjV0bWhCRFB5K210M29VL1ZKVGwvCmo1\neHQ4eFRIaDVFTVBaMnRlbkFGLzNZWFA4NVpWVlloVUc1YnlrdUFRSTJqRXdGR3Vl\nNkFWTjlyR05DQUxlMVcKN0xaQTA2bENBY09pZHNtL0dCcU5QVmFDQVVsNUI2eHlH\ndUYyTkc2QXRZN0k1WUZXTHV3UGxPWDgvdlJoNnE4NgoKLS0tICtSSUV0bnRRSjU1\nTUY3cjRJM3ZYV0x6ZXpLbXFnaEttYTZhY01nZzEzd28KLJcw48jawhSaZm1BZ7a1\nQm0770UO7troZcvViUfFJzHSXQsE4n4=\n-----END AGE ENCRYPTED FILE-----\n$ echo 'plain' | age --armor -R .\/rsa4096.pub\n-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1yc2Egc0tyUVpRCnluWk1qUFdI\nS2w3c3hmK0ZyMmcvUmZVWUpKejF0RTlSalVzKzQ1QkpCMklHUjlCcGJIeGFKSVNv\nUVdSa2pRbnkKQm5OWHlocEUyQjZYZjRJanVkN2YyMWJKaThwd0hEWkkwQURnWUVF\nbkxnR2ZSTktRRDdEWHZaYTVuVSsvYUY1UQpCa3lMdURsamhWdm52RE0yaE53QUxX\nWnVaRWdPRExnL2lIYSs4SE9YZUlNTldidG5QTC9XQU1IUll2NTQ0RzBjCjJnL0lC\nemtTdDlaNlpQM1JEbHRDdnROWmV3VTNpMDRxcDdabVU3bU5xODg4eUJ3dWZwYnpG\nQWtnbWlzc3RVV2IKZkVnSmQyZ2pOaXluYmFhMllvZ0tKNzcwS3FBWlJtS29LNGYx\nY3dxSFV4UHZpcmJleHFFNXI5ekUxQzNlYzdIWgpackFqemdMV1JjRjdnY3RBTTky\nbDlXVDVrQktjZkszQk12L3hlSDhHTllIdkVIS2FERUtCbWgyaUNad0NuRjRCCjZK\nSUYxYXkyNE1oKzN5VUZ0a1VVQjRnOVBLRUF4VU0yOFJUcEtUZDU2OHFDT2djekxO\nY3o4eGhQay9vNnlMRDUKVm14KzlrS1hOU1JrYTVHYjBwZWZzYXVsNHhPMEY5bTJ4\nZWZZQW5LVVQxRjVBUUQ4eDBEbDNkRTFFTGNvL21Kcgp5YkkxR3FrMTJQdnA3MFFl\nckgvZjBvT3I2WlZ6Q1ZuM3JFeGczTXFwU3FCV3FWbVIrTk1sL0RSWEZwL2Q4NC9m\nCjlDZUJ2NXZnQU5BUUNrVzdPODM1WUxFTzVrT3Q1VGZISThtSzJPb2xvVnU0R2g0\nTlY5RmJnbWhJbnU3TGMvTHoKVEt1OUZwR1UvNlFEVmRnWHZvay8wSGhnZWgrcnRN\nZWZsRHd5YnlCS0ovNAotLS0gYWQ4WXBodENuNDBKVVkwK3c5YnpSeG5OdndCRWph\neW5aU1QvekRLWlhkdwpjWnxdCQrEjd0NbP2ed0AFRLYH94R8EQTGEyYDMwEuzhsk\nM8fb2A==\n-----END AGE ENCRYPTED FILE-----<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>RSA1024 \u3060\u3068\u30a8\u30e9\u30fc\u3068\u306a\u308a\u307e\u3057\u305f\uff0e\u73fe\u5728 RSA \u306f 3072 \u304c\u898f\u5b9a\u5024\u3060\u3063\u305f\u3068\u601d\u3046\u306e\u3067\u9375\u5e33\u306e\u77ed\u3044 1024 \u306f\u8db3\u5207\u308a\u3055\u308c\u3066\u3044\u308b\u306e\u304b\u3082\u3057\u308c\u306a\u3044\u3067\u3059\u306d\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"title\">\u8907\u6570\u306e\u9375\u3067\u6697\u53f7\u5316<\/div>\n<div class=\"content\">\n<pre>$ echo 'plain' | age --armor -R .\/rsa2048.pub -R .\/rsa3072.pub -R .\/rsa4096.pub -R ~\/.ssh\/id_ed25519.pub\n-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1yc2EgNXd4UUtBCjFaajdDV3hh\ndXRuNkNNRVpRTUJ2ZDI0ZkRObGdCRmpydlZNUDAzSjhXbGdsWXJZa1lyWnFzSFlo\nbXFJbjNpSFYKcHZrWisyek1MWjZvVlJtV3djUEY1ei82bVFISzdwYm96a2FYeXRR\namdxTEhjWllCcGJsSytQN3ZWay82clZEZwp4bG5HSmVGNEFFVW5xMEx4UXhlT3A0\neHBONUhkbU1qRnRPUUFoR3BldzVhamFrc0xBWVp4Y001bUdqNGROT0dmCkhOUCtF\nTytsbXRTU1Exait5bG9DRVR4ZjRTT3owY01JTGRyOUN4eWFnd0hmTDlOenlWRE12\na0ZrM2E4NkFweTEKMEZvZ3h2TzdOZlJ5YnVpYm1yOXFIUkV2MXI0QnZtT1VMTFRT\nZ2JDOGI4VGpYRVROb3J1TzAvd2xYTHozSVdhOQoyMVFQNHBxb3AzaUQwa0hqeE5C\nbEF3Ci0+IHNzaC1yc2EgZFNIbVJ3Cm9KcEoyZndZK0JCakFURWl2eUt4dHNqdExy\nK0dzNkRpUXF1U0dJSXFIMlFWOFhGcGtkNFRXd1BuVGJBSmZhNkgKNjZZZStZZFFi\nWko2dXFkQ2hKMHVIcWV0ekVaeUhBOTJoSnZUWnFacmVFczE4UnllZnp4cXZCQWE4\nckdFNU5nbQpNaXB4eHhaUG1vWE5HQ2xoRkF5amVPL3kvaUlPL0h6ZVNtL05lV2VK\nOGdkVmpGZjVSNVNOZ1NsbEc1b0NBODFlCkNQTTFWb3orNC9WVWdadThFN3YwUTNr\nYXNCaDZ5KzBSckJpeEdZWllYMml0RmFpTWNZc3FEbHhXaUM0YTU1emMKbXRvQzh2\nUG1lM1FWYzRreDJINGY1MEV0cnArTzdMaklVS1VWRE5haWV0UzlFOG9CN3U0dFNu\nMU0vVFpYVXRoNwp5aHRDc2ZoWWVBeGZwWTlyQ2ZIVjcxczZ1ajJoVy93dDFlVWsy\nNlF0ZEFCTHlBNTk1YlhTNmtKY1RPZ2tqZU94CjJkT3REWTRTZFZuR0pneDNtZjND\nUXVjMWRqeCtVODZEb2J6bkgxWm4ycGRxQWI0amVqdXNFdnJtdkFlZmZMUFYKdlVT\nekhlK1hQSFRuRFBmV09JWTUrSS9VNnQ5RTY2T0dEeG9ONVVXdFRVY0g1ZmdqTStR\nNDRUc21LQXhyK0dNbQoKLT4gc3NoLXJzYSBzS3JRWlEKc2FIQ20zUmRQYmhrRTlO\nbjF0V2lKZXhFWXVNcVJmdk5jNXhMaDdkdGZWcGc4WVVBbGdGZGhTM0dLSFpkbWlP\nSAo4aEl6U2xRTXhTTFUzTzhsWThtbngwZUl6VGQ1Z09IKzJWK29XNzNOL2ZMaEc4\nWkdxUkI0cXVHaS9IT0NTS3M0Ci8vYjJDczQrUzdaSmxrU0ZsOFU4VUk0Nzh3eHh6\nelYzOWJVaUxNbjM3cGRTdkd5Vlc3YWtHUjRiWDNoYU83WGYKNklxMkZCanBMZ0N5\nb2ZvN3VwZkNLcUxTM0FVNU1TMmczSFR1Nm9HMHJQdlIyemxwNWNjVktIWlRnSks2\nVWlwVAoyR3VQZmJCTGJSQ2xGemRWM1lUbmFhcFpmNE5ITmdjUFZZNTFaMW9ZcCtp\nQ0V6ajFwbjEyTkZvT3JRZ3NCK011Cm9EOFcyQTNBT2pOVk5mZDU1cFQ3TFE5MnNK\neEVxWE1uMUNadkhMTVZVcUdBRythZmJnVG81ZG93YlE4K2JLWkYKbTgrTmVOSTEx\nRWRqTXdRRDlmRjBrNUJpenZoenU0NnNzVmlxMmZKVERqTDdoZnlUZUNVaUxZNE91\nRHNsK2NmawpacUVZdU9sdUJEWE83Z1FYYnhFQU5pMlZQVVhiV2hDbzBhM0YwOFZ5\nNy9EclZLK29XTUJ3K25ldDV2dTZpVlgxCkxsN3ZMRjVJekZ2aXl6UnFaSXpoYzUr\nQWRQR0VjOUZPSnpnMk1uL0k4SW11VHdheW1xN25yR3VYbGNoNW9LTUkKUXNXVGFJ\nc3dXY0hxaURhSEllN1o0Rm9nQnZlck53V0R5YTdDYWltTURSbHBGc0JFTUZkL1hz\nMXRqTUNVNUs5MQoxNnFxN1AxenhYUFZnb0hMRDlnaWY3VmRCd0NnZk44UVNpb2Zk\nRUZ4U1Y4Ci0+IHNzaC1lZDI1NTE5IGVSY0tCZyBSNml6R2pvQnV6WWV2WmFHaFo5\nL0hTSFl5Y1h4S1lBNkFSZjNod29TV1dnCnhpVGNIVW44dnNrZlJyWWZxUGhsVGY1\nTlMyR0tkcjUxTnI3NStaL2UwM1kKLS0tIFg3VEg5MGNCZnJBNmU0NXUza1d1aVlM\ncmk0eXVab1RmTzhVTTZid1ZWclUKe1wXH51zJI3GYYwGVPhoXDcuV8vBZIcvGPQz\n5pSAkRa\/YrHMrfk=\n-----END AGE ENCRYPTED FILE-----<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>RSA, ED25519 \u4e21\u65b9\u3092\u542b\u3080\u8907\u6570\u306e\u9375\u3067\u6697\u53f7\u5316\u3082\u554f\u984c\u306a\u304b\u3063\u305f\u3067\u3059\uff0e(\u7d19\u5e45\u3092\u3068\u308b\u306e\u3067\u3053\u3053\u306b\u306f\u8f09\u305b\u307e\u305b\u3093\u304c\u305d\u308c\u305e\u308c\u306e\u9375\u3067\u5fa9\u53f7\u3082\u5927\u4e08\u592b\u3067\u3057\u305f\uff0e)<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"title\">age \u4f5c\u8005\u306e\u9375\u3092\u5165\u624b\u3057\u3066\u6697\u53f7\u5316\u2026\u2026\u5931\u6557<\/div>\n<div class=\"content\">\n<pre>$ wget https:\/\/github.com\/FiloSottile.keys\n$ age -a -R .\/FiloSottile.keys data\nage: warning: recipients file \".\/FiloSottile.keys\": ignoring unsupported SSH key of type \"ecdsa-sha2-nistp256\" at line 1\nage: error: failed to parse recipient file \".\/FiloSottile.keys\": \".\/FiloSottile.keys\": no recipients found\nage: report unexpected or unhelpful errors at https:\/\/filippo.io\/age\/report\n$ dd if=FiloSottile.keys bs=20 count=1 2&gt;\/dev\/null; echo\necdsa-sha2-nistp256<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>GitHub \u304b\u3089 age \u4f5c\u8005\u306e\u9375\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u3057\u3066\u6697\u53f7\u5316\u3057\u3088\u3046\u3068\u3057\u307e\u3057\u305f\u304c\uff0c\u516c\u958b\u3055\u308c\u3066\u3044\u308b\u9375\u5f62\u5f0f\u304c ed25519-sk \u306e\u3088\u3046\u3067 age \u306b\u5bfe\u5fdc\u3057\u3066\u3044\u306a\u3044\u9375\u3060\u3063\u305f\u306e\u3067\u6697\u53f7\u5316\u51fa\u6765\u307e\u305b\u3093\u3067\u3057\u305f\uff0e<\/p>\n<\/div>\n<div class=\"admonitionblock note\">\n<table  class=\" table table-hover\" >\n<tbody>\n<tr>\n<td class=\"icon\">\n<div class=\"title\">Note<\/div>\n<\/td>\n<td class=\"content\">\n<div class=\"dlist\">\n<div class=\"title\">\u9375\u306e\u5165\u624b\u4f8b<\/div>\n<dl>\n<dt class=\"hdlist1\">Codeberg<\/dt>\n<dd><a href=\"https:\/\/codeberg.org\/${USERNAME}.keys\" class=\"bare\">https:\/\/codeberg.org\/${USERNAME}.keys<\/a><\/dd>\n<dt class=\"hdlist1\">Github<\/dt>\n<dd><a href=\"https:\/\/github.com\/${USERNAME}.keys\" class=\"bare\">https:\/\/github.com\/${USERNAME}.keys<\/a><\/dd>\n<dt class=\"hdlist1\">GitLab<\/dt>\n<dd><a href=\"https:\/\/gitlab.com\/${USERNAME}.keys\" class=\"bare\">https:\/\/gitlab.com\/${USERNAME}.keys<\/a><\/dd>\n<dt class=\"hdlist1\">Launchpad<\/dt>\n<dd><a href=\"https:\/\/launchpad.net\/~${USERNAME}\/+sshkeys\" class=\"bare\">https:\/\/launchpad.net\/~${USERNAME}\/+sshkeys<\/a><\/dd>\n<\/dl>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"paragraph\">\n<p>GPG \u3092\u516c\u958b\u3057\u3066\u3044\u306a\u3044\u4eba\u3067 GitHub \u306a\u3069\u3067 SSH\u9375\u3092\u516c\u958b\u3057\u3066\u3044\u308b\u4eba\u306f\u7d50\u69cb\u5c45\u308b\u6c17\u304c\u3059\u308b\u306e\u3067 SSH\u9375\u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316\u304c\u3067\u304d\u308b\u3068\u4fbf\u5229\u305d\u3046\u3067\u3059\uff0e<br \/>\nopenssl \u3067\u3082\u51fa\u6765\u308b\u3057\u5c0e\u5165\u3055\u308c\u305f\u74b0\u5883\u3082\u591a\u3044\u3068\u601d\u3044\u307e\u3059\u304c\u30b3\u30de\u30f3\u30c9\u304c\u7169\u96d1\uff0cage \u3060\u3068\u5229\u7528\u304c\u7c21\u5358\u306a\u306e\u3067\u666e\u53ca\u3059\u308c\u3070\u4fbf\u5229\u305d\u3046\u3067\u3059\uff0e<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"title\">\u74b0\u5883<\/div>\n<div class=\"content\">\n<pre>$ dpkg-query -W age openssh-client openssl\nage     1.1.1-1+b3\nopenssh-client  1:9.2p1-2+deb12u2\nopenssl 3.0.11-1~deb12u2+rpt1\n$ lsb_release -a\nNo LSB modules are available.\nDistributor ID: Raspbian\nDescription:    Raspbian GNU\/Linux 12 (bookworm)\nRelease:        12\nCodename:       bookworm\n$ arch\narmv7l\n$ cat \/proc\/device-tree\/model ;echo\nRaspberry Pi 3 Model B Rev 1.2<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>age \u3068\u3044\u3046\u6697\u53f7\u5316\u30c4\u30fc\u30eb\u3092\u77e5\u308a\u307e\u3057\u305f\uff0e\u3053\u306e age \u3067\u306f ssh \u306e\u516c\u958b\u9375\u3092\u4f7f\u3063\u3066\u6697\u53f7\u5316\uff0c\u79d8\u5bc6\u9375\u3067\u5fa9\u53f7\u5316\u304c\u51fa\u6765\u308b\u306e\u304c\u9762\u767d\u305d\u3046\u306a\u306e\u3067\u5c11\u3057\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e FiloSottile\/age: A simple, modern [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"webmentions_disabled_pings":false,"webmentions_disabled":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"federated","footnotes":""},"categories":[809,6,546],"tags":[812,217,72,341],"class_list":["post-4007","post","type-post","status-publish","format-standard","hentry","category-bookworm-raspberry-pi-os","category-linux","category-raspberry-pi-os","tag-age","tag-encryption","tag-openssh","tag-ssh"],"_links":{"self":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/4007","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/comments?post=4007"}],"version-history":[{"count":1,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/4007\/revisions"}],"predecessor-version":[{"id":4008,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/posts\/4007\/revisions\/4008"}],"wp:attachment":[{"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/media?parent=4007"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/categories?post=4007"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matoken.org\/blog\/wp-json\/wp\/v2\/tags?post=4007"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}