{ "version": "https://jsonfeed.org/version/1.1", "user_comment": "This feed allows you to read the posts from this site in any feed reader that supports the JSON Feed format. To add this feed to your reader, copy the following URL -- https://matoken.org/blog/tag/ssh/feed/json/ -- and add it your reader.", "home_page_url": "https://matoken.org/blog/tag/ssh/", "feed_url": "https://matoken.org/blog/tag/ssh/feed/json/", "language": "ja", "title": "ssh – matoken's blog", "description": "Is there no plan B?", "icon": "https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9.jpeg", "items": [ { "id": "https://matoken.org/blog/?p=5097", "url": "https://matoken.org/blog/2025/12/25/ssh-tiny-christmas/", "title": "ssh tiny.christmas", "content_html": "

\n
\n

\u53bb\u5e74\u306f\u3044\u304f\u3064\u304b\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u30af\u30ea\u30b9\u30de\u30b9\u30c4\u30ea\u30fc\u3092\u96c6\u3081\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n

\u4eca\u5e74\u306f\u30cd\u30bf\u5207\u308c\u304b\u306a\u3068\u601d\u3063\u305f\u3089ActivityPub \u306b\u521d\u3081\u3066\u898b\u308b\u30bf\u30fc\u30df\u30ca\u30eb\u30af\u30ea\u30b9\u30de\u30b9\u30c4\u30ea\u30fc\u304c\u6d41\u308c\u3066\u304d\u307e\u3057\u305f\uff0e

\n
\n

\n
\n

ssh \u3067\u63a5\u7d9a\u3059\u308b\u3068\u30c4\u30ea\u30fc\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e

\n
\n
\n
\n
$ ssh tiny.christmas
\n
\n
\n

\n
\n

\u30af\u30ea\u30b9\u30de\u30b9\u30c4\u30ea\u30fc\u304c\u8868\u793a\u3055\u308c\uff0c\u300cO Christmas Tree\u300d\u306e\u6b4c\u8a5e\u304c\u6d41\u308c\u307e\u3059\uff0e
\ntree \u304cUnicode\u70b9\u5b57\u3092\u4f7f\u3063\u3066\u66f8\u304b\u308c\u3066\u3044\u308b\u306e\u304c\u6700\u8fd1\u307d\u3044\u3067\u3059\u306d\uff0e

\n
\n
\n

\u8a73\u7d30\u306f\u4ee5\u4e0b\u306b\uff0e

\n
\n
\n\n
\n", "content_text": "\u53bb\u5e74\u306f\u3044\u304f\u3064\u304b\u306e\u30bf\u30fc\u30df\u30ca\u30eb\u30af\u30ea\u30b9\u30de\u30b9\u30c4\u30ea\u30fc\u3092\u96c6\u3081\u307e\u3057\u305f\uff0e\n\n\n\n\nMerry X-mas \u2013 matoken’s blog\n\n\n\n\n\u4eca\u5e74\u306f\u30cd\u30bf\u5207\u308c\u304b\u306a\u3068\u601d\u3063\u305f\u3089ActivityPub \u306b\u521d\u3081\u3066\u898b\u308b\u30bf\u30fc\u30df\u30ca\u30eb\u30af\u30ea\u30b9\u30de\u30b9\u30c4\u30ea\u30fc\u304c\u6d41\u308c\u3066\u304d\u307e\u3057\u305f\uff0e\n\n\n\nssh \u3067\u63a5\u7d9a\u3059\u308b\u3068\u30c4\u30ea\u30fc\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e\n\n\n\n$ ssh tiny.christmas\n\n\n\n\n\u30af\u30ea\u30b9\u30de\u30b9\u30c4\u30ea\u30fc\u304c\u8868\u793a\u3055\u308c\uff0c\u300cO Christmas Tree\u300d\u306e\u6b4c\u8a5e\u304c\u6d41\u308c\u307e\u3059\uff0e\ntree \u304cUnicode\u70b9\u5b57\u3092\u4f7f\u3063\u3066\u66f8\u304b\u308c\u3066\u3044\u308b\u306e\u304c\u6700\u8fd1\u307d\u3044\u3067\u3059\u306d\uff0e\n\n\n\u8a73\u7d30\u306f\u4ee5\u4e0b\u306b\uff0e\n\n\n\n\nssh tiny.christmas \u00b7 eieio.games", "date_published": "2025-12-25T06:04:00+09:00", "date_modified": "2025-12-25T06:04:02+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Christmas", "ssh", "\u672a\u5206\u985e" ] }, { "id": "https://matoken.org/blog/?p=4540", "url": "https://matoken.org/blog/2025/05/05/change-codebergs-ssh-authentication-to-ssh-public-key/", "title": "Codeberg\u306essh\u8a8d\u8a3c\u3092\u516c\u958b\u9375\u8a8d\u8a3c\u306b\u5909\u66f4\u3059\u308b", "content_html": "

\n
\n

Forgejo+\u03b1\u306a\u611f\u3058\u306eGitHub\u4ee3\u66ff\u306aCodeberg\u306bSSH\u516c\u958b\u9375\u3092\u767b\u9332\u3057\u3066ssh\u516c\u958b\u9375\u8a8d\u8a3c\u3067Git\u304c\u4f7f\u3048\u308b\u3088\u3046\u306b\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n

\n
\n

\u516c\u5f0f\u306e\u624b\u9806\u306f\u3053\u3061\u3089\u306b\u3042\u308a\u307e\u3059\uff0e\u5c11\u3057\u6c17\u306b\u306a\u3063\u305f\u306e\u304c\u9375\u751f\u6210\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067rounds\u304c100\u3082\u3042\u308b\u3053\u3068\uff0e\u624b\u5143\u306eOpenSSH 10.0p2\u306essh-keygen\u306eman\u3067\u78ba\u8a8d\u3059\u308b\u3068\u65e2\u5b9a\u5024\u306f16\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u5927\u5206\u637b\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n\n
\n
\n

\u9375\u30da\u30a2\u3092\u751f\u6210\u3057\u305f\u3089*.pub\u306e\u62e1\u5f35\u5b50\u306e\u4ed8\u3044\u305f\u516c\u958b\u9375*\u3092\u4ee5\u4e0b\u306e\u30da\u30fc\u30b8\u304b\u3089\u767b\u9332\uff0e

\n
\n
\n

https://codeberg.org/user/settings/keys

\n
\n
\n

~/.ssh/config\u306bCodeberg\u306e\u8a2d\u5b9a\u3092\u66f8\u3044\u3066\u304a\u304d\u307e\u3059\uff0eCodeberg\u306fport 443\u3067\u3082ssh\u63a5\u7d9aok\u306a\u306e\u3067\u3053\u3053\u3067\u306f443\u3092\u4f7f\u3046\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\uff0e
\nUser\u304c\u307f\u3093\u306agit\u3067\u3059\u304c\uff0c\u9375\u306b\u3088\u308a\u30e6\u30fc\u30b6\u3092\u533a\u5225\u3059\u308b\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
$ grep -A 4 Host\\ codeberg.org ~/.ssh/config\nHost codeberg.org\n  HostName codeberg.org\n  User git\n  IdentityFile ~/.ssh/id_ed25519\n  Port 443
\n
\n
\n
\n

\u63a5\u7d9a\u30c6\u30b9\u30c8\u3092\u3057\u307e\u3059\uff0e

\n
\n
\n

\u521d\u56de\u63a5\u7d9a\u6642\u306b\u306f\u30db\u30b9\u30c8\u9375\u306e\u78ba\u8a8d\u304c\u5fc5\u8981\u3067\u3059\uff0eCodeberg\u306e\u30db\u30b9\u30c8\u9375\u306e\u9375\u6307\u7d0b\u306f\u4ee5\u4e0b\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\uff0e\u78ba\u8a8d\u3057\u3066\u5165\u529b\u3057\u307e\u3057\u3087\u3046\uff0e

\n
\n
\n\n
\n
\n
\n
$ ssh -T git@codeberg.org\nThe authenticity of host 'codeberg.org (2a0a:4580:103f:c0de::1)' can't be established.\nED25519 key fingerprint is SHA256:mIlxA9k46MmM6qdJOdMnAQpzGxF4WIVVL+fj+wZbw0g.\n+--[ED25519 256]--+\n| ++*+=.          |\n|o +.+...         |\n|oBo...+ o        |\n|+o*o + OE        |\n|o ... +.So       |\n|. o .  .o.+      |\n|.= o .  .+ .     |\n|..+.o   ...      |\n| oo     .o.      |\n+----[SHA256]-----+\nThis key is not known by any other names.\nAre you sure you want to continue connecting (yes/no/[fingerprint])? SHA256:mIlxA9k46MmM6qdJOdMnAQpzGxF4WIVVL+fj+wZbw0g\nWarning: Permanently added 'codeberg.org' (ED25519) to the list of known hosts.\nConnection closed by 2a0a:4580:103f:c0de::1 port 22
\n
\n
\n
\n

\u63a5\u7d9a\u304c\u3046\u307e\u304f\u884c\u3051\u3070\u81ea\u5206\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u540d\u3084\uff0c\u9375\u306e\u30b3\u30e1\u30f3\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e

\n
\n
\n
\n
$ ssh -T git@codeberg.org\nHost key fingerprint is SHA256:mIlxA9k46MmM6qdJOdMnAQpzGxF4WIVVL+fj+wZbw0g\n+--[ED25519 256]--+\n| ++*+=.          |\n|o +.+...         |\n|oBo...+ o        |\n|+o*o + OE        |\n|o ... +.So       |\n|. o .  .o.+      |\n|.= o .  .+ .     |\n|..+.o   ...      |\n| oo     .o.      |\n+----[SHA256]-----+\nEnter passphrase for key '/home/matoken/.ssh/id_ed25519':\nAuthenticated to codeberg.org ([2a0a:4580:103f:c0de::1]:22) using \"publickey\".\nHi there, matoken! You've successfully authenticated with the key named matoken@l13, but Forgejo does not provide shell access.\nIf this is unexpected, please log in with password and setup Forgejo under another user.
\n
\n
\n
\n

\u3053\u3053\u3067\u306fmatoken@l13\u3068\u3044\u3046\u9375\u3092\u4f7f\u3044\uff0cmatoken\u3068\u3044\u3046\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30ed\u30b0\u30a4\u30f3\u306b\u6210\u529f\u3057\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n\n\n\n\n\n
\n
Note
\n
\nCodeberg\u306fport 443\u3067\u3082ssh\u63a5\u7d9aok\u306a\u306e\u3067\u3059\u304c\uff0c\u3053\u3053\u306e\u30c6\u30b9\u30c8\u306f443\u3092\u4f7f\u3046\u3068\u5931\u6557\u3059\u308b\u3088\u3046\u3067\u3059\uff0e\n
\n
\n
\n

\u3053\u306e\u72b6\u614b\u3067\u30d1\u30b9\u30ef\u30fc\u30c9\u8a8d\u8a3c\u3092\u8a66\u307f\u308b\u3068\u5931\u6557\u3057\u307e\u3059\uff0e

\n
\n
\n
\n
$ ssh -T matoken@codeberg.org -o PasswordAuthentication=yes\nHost key fingerprint is SHA256:mIlxA9k46MmM6qdJOdMnAQpzGxF4WIVVL+fj+wZbw0g\n+--[ED25519 256]--+\n| ++*+=.          |\n|o +.+...         |\n|oBo...+ o        |\n|+o*o + OE        |\n|o ... +.So       |\n|. o .  .o.+      |\n|.= o .  .+ .     |\n|..+.o   ...      |\n| oo     .o.      |\n+----[SHA256]-----+\nmatoken@codeberg.org: Permission denied (publickey).
\n
\n
\n
\n

TOTP\u306e\u8a2d\u5b9a\u3092\u6709\u52b9\u306b\u3057\u3066\u3053\u306eSSH\u516c\u958b\u9375\u8a8d\u8a3c\u3092\u4f7f\u3046\u3088\u3046\u306b\u3059\u308b\u3068\u305d\u3053\u305d\u3053\u5b89\u5fc3\u306a\u611f\u3058\u3067\u3059\uff0e

\n
\n", "content_text": "Forgejo+\u03b1\u306a\u611f\u3058\u306eGitHub\u4ee3\u66ff\u306aCodeberg\u306bSSH\u516c\u958b\u9375\u3092\u767b\u9332\u3057\u3066ssh\u516c\u958b\u9375\u8a8d\u8a3c\u3067Git\u304c\u4f7f\u3048\u308b\u3088\u3046\u306b\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\u516c\u5f0f\u306e\u624b\u9806\u306f\u3053\u3061\u3089\u306b\u3042\u308a\u307e\u3059\uff0e\u5c11\u3057\u6c17\u306b\u306a\u3063\u305f\u306e\u304c\u9375\u751f\u6210\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3067rounds\u304c100\u3082\u3042\u308b\u3053\u3068\uff0e\u624b\u5143\u306eOpenSSH 10.0p2\u306essh-keygen\u306eman\u3067\u78ba\u8a8d\u3059\u308b\u3068\u65e2\u5b9a\u5024\u306f16\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u5927\u5206\u637b\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\n\nAdding an SSH key to your account | Codeberg Documentation\n\n\n\n\n\u9375\u30da\u30a2\u3092\u751f\u6210\u3057\u305f\u3089*.pub\u306e\u62e1\u5f35\u5b50\u306e\u4ed8\u3044\u305f\u516c\u958b\u9375*\u3092\u4ee5\u4e0b\u306e\u30da\u30fc\u30b8\u304b\u3089\u767b\u9332\uff0e\n\n\nhttps://codeberg.org/user/settings/keys\n\n\n~/.ssh/config\u306bCodeberg\u306e\u8a2d\u5b9a\u3092\u66f8\u3044\u3066\u304a\u304d\u307e\u3059\uff0eCodeberg\u306fport 443\u3067\u3082ssh\u63a5\u7d9aok\u306a\u306e\u3067\u3053\u3053\u3067\u306f443\u3092\u4f7f\u3046\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\uff0e\nUser\u304c\u307f\u3093\u306agit\u3067\u3059\u304c\uff0c\u9375\u306b\u3088\u308a\u30e6\u30fc\u30b6\u3092\u533a\u5225\u3059\u308b\u3088\u3046\u3067\u3059\uff0e\n\n\n\n$ grep -A 4 Host\\ codeberg.org ~/.ssh/config\nHost codeberg.org\n HostName codeberg.org\n User git\n IdentityFile ~/.ssh/id_ed25519\n Port 443\n\n\n\n\u63a5\u7d9a\u30c6\u30b9\u30c8\u3092\u3057\u307e\u3059\uff0e\n\n\n\u521d\u56de\u63a5\u7d9a\u6642\u306b\u306f\u30db\u30b9\u30c8\u9375\u306e\u78ba\u8a8d\u304c\u5fc5\u8981\u3067\u3059\uff0eCodeberg\u306e\u30db\u30b9\u30c8\u9375\u306e\u9375\u6307\u7d0b\u306f\u4ee5\u4e0b\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\uff0e\u78ba\u8a8d\u3057\u3066\u5165\u529b\u3057\u307e\u3057\u3087\u3046\uff0e\n\n\n\n\nVerifying you’re connected to Codeberg using SSH fingerprints | Codeberg Documentation\n\n\n\n\n\n$ ssh -T git@codeberg.org\nThe authenticity of host 'codeberg.org (2a0a:4580:103f:c0de::1)' can't be established.\nED25519 key fingerprint is SHA256:mIlxA9k46MmM6qdJOdMnAQpzGxF4WIVVL+fj+wZbw0g.\n+--[ED25519 256]--+\n| ++*+=. |\n|o +.+... |\n|oBo...+ o |\n|+o*o + OE |\n|o ... +.So |\n|. o . .o.+ |\n|.= o . .+ . |\n|..+.o ... |\n| oo .o. |\n+----[SHA256]-----+\nThis key is not known by any other names.\nAre you sure you want to continue connecting (yes/no/[fingerprint])? SHA256:mIlxA9k46MmM6qdJOdMnAQpzGxF4WIVVL+fj+wZbw0g\nWarning: Permanently added 'codeberg.org' (ED25519) to the list of known hosts.\nConnection closed by 2a0a:4580:103f:c0de::1 port 22\n\n\n\n\u63a5\u7d9a\u304c\u3046\u307e\u304f\u884c\u3051\u3070\u81ea\u5206\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u540d\u3084\uff0c\u9375\u306e\u30b3\u30e1\u30f3\u30c8\u304c\u8868\u793a\u3055\u308c\u307e\u3059\uff0e\n\n\n\n$ ssh -T git@codeberg.org\nHost key fingerprint is SHA256:mIlxA9k46MmM6qdJOdMnAQpzGxF4WIVVL+fj+wZbw0g\n+--[ED25519 256]--+\n| ++*+=. |\n|o +.+... |\n|oBo...+ o |\n|+o*o + OE |\n|o ... +.So |\n|. o . .o.+ |\n|.= o . .+ . |\n|..+.o ... |\n| oo .o. |\n+----[SHA256]-----+\nEnter passphrase for key '/home/matoken/.ssh/id_ed25519':\nAuthenticated to codeberg.org ([2a0a:4580:103f:c0de::1]:22) using \"publickey\".\nHi there, matoken! You've successfully authenticated with the key named matoken@l13, but Forgejo does not provide shell access.\nIf this is unexpected, please log in with password and setup Forgejo under another user.\n\n\n\n\u3053\u3053\u3067\u306fmatoken@l13\u3068\u3044\u3046\u9375\u3092\u4f7f\u3044\uff0cmatoken\u3068\u3044\u3046\u30a2\u30ab\u30a6\u30f3\u30c8\u3067\u30ed\u30b0\u30a4\u30f3\u306b\u6210\u529f\u3057\u3066\u3044\u307e\u3059\uff0e\n\n\n\n\n\nNote\n\n\nCodeberg\u306fport 443\u3067\u3082ssh\u63a5\u7d9aok\u306a\u306e\u3067\u3059\u304c\uff0c\u3053\u3053\u306e\u30c6\u30b9\u30c8\u306f443\u3092\u4f7f\u3046\u3068\u5931\u6557\u3059\u308b\u3088\u3046\u3067\u3059\uff0e\n\n\n\n\n\n\u3053\u306e\u72b6\u614b\u3067\u30d1\u30b9\u30ef\u30fc\u30c9\u8a8d\u8a3c\u3092\u8a66\u307f\u308b\u3068\u5931\u6557\u3057\u307e\u3059\uff0e\n\n\n\n$ ssh -T matoken@codeberg.org -o PasswordAuthentication=yes\nHost key fingerprint is SHA256:mIlxA9k46MmM6qdJOdMnAQpzGxF4WIVVL+fj+wZbw0g\n+--[ED25519 256]--+\n| ++*+=. |\n|o +.+... |\n|oBo...+ o |\n|+o*o + OE |\n|o ... +.So |\n|. o . .o.+ |\n|.= o . .+ . |\n|..+.o ... |\n| oo .o. |\n+----[SHA256]-----+\nmatoken@codeberg.org: Permission denied (publickey).\n\n\n\nTOTP\u306e\u8a2d\u5b9a\u3092\u6709\u52b9\u306b\u3057\u3066\u3053\u306eSSH\u516c\u958b\u9375\u8a8d\u8a3c\u3092\u4f7f\u3046\u3088\u3046\u306b\u3059\u308b\u3068\u305d\u3053\u305d\u3053\u5b89\u5fc3\u306a\u611f\u3058\u3067\u3059\uff0e", "date_published": "2025-05-05T07:15:05+09:00", "date_modified": "2025-05-05T07:21:10+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Codeberg", "ssh", "Debian", "Linux" ] }, { "id": "https://matoken.org/blog/?p=4244", "url": "https://matoken.org/blog/2024/11/21/ftp-rsh-ssh-methods-have-been-removed-from-apt-in-debian-unstable/", "title": "Debian unstable\u306eapt\u3067ftp, rsh, ssh\u30e1\u30bd\u30c3\u30c9\u304c\u524a\u9664", "content_html": "

\n
\n

Debian sid\u3067\u30d1\u30c3\u30b1\u30fc\u30b8\u66f4\u65b0\u3092\u3059\u308b\u3068\u65b0\u3057\u3044apt\u304c\u3084\u3063\u3066\u304d\u307e\u3057\u305f\uff0e\u305d\u3057\u3066apt-listchanges\u3067\u6c17\u306b\u306a\u308b\u8a18\u8ff0\u304c\u8868\u793a\u3055\u308c\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ zcat /usr/share/doc/apt/NEWS.Debian.gz | head\napt (2.9.11) unstable; urgency=medium\n\n  The ftp, rsh, and ssh methods have been removed. They have been unsupported\n  and disabled since 1.8. Please, migrate to http(s) instead, or contribute\n  an sftp method.\n\n  If you need ad hoc access to a remote repository, you can usually run\n  `python3 -m http.server` on that machine and use SSH port forwarding to\n  run HTTP over SSH.
\n
\n
\n
\n

ftp, rsh, ssh\u30e1\u30bd\u30c3\u30c9\u304c\u524a\u9664\u3055\u308c\u305f\u3088\u3046\u3067\u3059\uff0e

\n
\n

\n
\n

\u4ee3\u308f\u308a\u306bhttp(s)\u306b\u79fb\u884c\u3059\u308b\u304b\uff0csftp\u30e1\u30bd\u30c3\u30c9\u306b\u8ca2\u732e\u3057\u3066\u304f\u3060\u3055\u3044\u3068\u306e\u3053\u3068\uff0e

\n
\n
\n

\u30a2\u30c9\u30db\u30c3\u30af\u30a2\u30af\u30bb\u30b9\u304c\u5fc5\u8981\u306a\u5834\u5408\u306fhttpd\u3092\u8d77\u52d5\u3057\u3066ssh\u30dd\u30fc\u30c8\u30d5\u30a9\u30ef\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u4f7f\u3044ssh\u7d4c\u7531\u3067http\u3092\u5229\u7528\u3059\u308b\u3088\u3046\u306b\u52e7\u3081\u3089\u308c\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n

\u81ea\u5206\u306esid\u74b0\u5883\u306esource.list\u3092\u78ba\u8a8d\u3059\u308b\u3068http\u3060\u3051\uff0c/etc/apt/source.list.d/* \u3092\u78ba\u8a8d\u3059\u308b\u3068\u3053\u3053\u306f\u5168\u3066https\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3057\u305f\uff0e\u3068\u3044\u3046\u3053\u3068\u3067\u3053\u306e\u74b0\u5883\u306f\u3053\u306e\u307e\u307e\u3067\u5927\u4e08\u592b\u305d\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
$ grep ^deb\\  /etc/apt/sources.list\ndeb http://ftp.jp.debian.org/debian/ sid main contrib non-free non-free-firmware\n$ grep ^deb\\  /etc/apt/sources.list.d/*\n/etc/apt/sources.list.d/signal-xenial.list:deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main\n/etc/apt/sources.list.d/steam-stable.list:deb [arch=amd64,i386 signed-by=/usr/share/keyrings/steam.gpg] https://repo.steampowered.com/steam/ stable steam\n/etc/apt/sources.list.d/tailscale.list:deb [signed-by=/usr/share/keyrings/tailscale-archive-keyring.gpg] https://pkgs.tailscale.com/stable/debian sid main\n/etc/apt/sources.list.d/vscodium.list:deb [ signed-by=/usr/share/keyrings/vscodium-archive-keyring.gpg ] https://download.vscodium.com/debs vscodium main\n/etc/apt/sources.list.d/wezterm.list:deb [signed-by=/usr/share/keyrings/wezterm-fury.gpg] https://apt.fury.io/wez/ * *
\n
\n
\n
\n

\u8a66\u3057\u306bsource.list\u3092ftp\u306b\u66f8\u304d\u63db\u3048\u3066\u8a66\u3057\u3066\u307f\u307e\u3059\uff0eftp\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u306e\u3092\u78ba\u8a8d\u3057\u305f\u30ea\u30dd\u30b8\u30c8\u30ea\u3092 apt edit-sources \u3067source.list\u3092\u66f8\u304d\u63db\u3048\u3053\u3053\u3067\u30b5\u30cb\u30bf\u30a4\u30ba\u30c1\u30a7\u30c3\u30af\u304c\u8d70\u3063\u3066\u3044\u308b\u306f\u305a\u306a\u306e\u3067\u3059\u304c\u7279\u306b\u4f55\u3082\u8a00\u308f\u308c\u305a\u66f8\u304d\u63db\u3048\u3089\u308c\u307e\u3057\u305f\uff0e\u305d\u306e\u5f8c apt update \u3092\u5b9f\u884c\u3057\u3066\u307f\u308b\u3068\u30a8\u30e9\u30fc\u3068\u306a\u308aftp\u306f\u4f7f\u3048\u307e\u305b\u3093\u3067\u3057\u305f\uff0e

\n
\n
\n
\n
$ curl -s ftp://ftp.jp.debian.org/debian/dists/sid/InRelease | head\n-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA256\n\nOrigin: Debian\nLabel: Debian\nSuite: unstable\nCodename: sid\nChangelogs: https://metadata.ftp-master.debian.org/changelogs/@CHANGEPATH@_changelog\nDate: Thu, 21 Nov 2024 02:25:33 UTC\nValid-Until: Thu, 28 Nov 2024 02:25:33 UTC
\n
\n
\n
\n
\n
$ sudo apt update\n  :\nError: The method driver /usr/lib/apt/methods/ftp could not be found.\nNotice: Is the package apt-transport-ftp installed?\n  :\nError: Failed to fetch ftp://ftp.jp.debian.org/debian/dists/sid/InRelease  \nError: Some index files failed to download. They have been ignored, or old ones used instead.\n
\n
\n
\n
\n

apt-transport-ftp \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u307e\u3059\u304b\u3068\u805e\u304b\u308c\u307e\u3059\u304c\u305d\u306e\u69d8\u306a\u3082\u306e\u306f\u306a\u3044\u306e\u3067\u3084\u306f\u308a\u4f7f\u3048\u306a\u3044\u3067\u3059\u306d\uff0e
\n\u305d\u306e\u4ed6\u306eapt-transport\u306f\u3053\u3093\u306a\u611f\u3058\uff0c\u3053\u306e\u4e2d\u3067\u306fhttps\u3068tor\u3057\u304b\u4f7f\u3063\u305f\u3053\u3068\u304c\u306a\u3044\u6c17\u304c\u3057\u307e\u3059\uff0e

\n
\n
\n
\n
$ apt-cache search apt-transport\napt - commandline package manager\napt-transport-https - transitional package for https support\nlibapt-pkg6.0t64 - package management runtime library\napt-transport-in-toto - apt transport method for in-toto supply chain verification\napt-transport-s3 - APT transport for privately held AWS S3 repositories\napt-transport-tor - APT transport for anonymous package downloads via Tor
\n
\n
\n
\n

\u3068\u3044\u3046\u3053\u3068\u3067\uff0csid\u3092\u4f7f\u3063\u3066\u3044\u308b\u4eba\u306f\u5c11\u306a\u3044\u3067\u3057\u3087\u3046\u304c\u6b21\u306eDebian 13\u3042\u305f\u308a\u304b\u3089\u3053\u308c\u304c\u964d\u3063\u3066\u304f\u308b\u3068\u601d\u3046\u306e\u3067\u65b0\u305f\u306b\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u7528\u610f\u3059\u308b\u5834\u5408\u3084dist-upgrade\u6642\u306b\u6c17\u3092\u3064\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u305d\u3046\u3067\u3059\uff0e

\n
\n
\n
\u74b0\u5883
\n
\n
$ dpkg-query -W apt\napt     2.9.12\n$ lsb_release -dr\nDescription:    Debian GNU/Linux trixie/sid\nRelease:        n/a\n$ arch\nx86_64
\n
\n
\n

\n", "content_text": "Debian sid\u3067\u30d1\u30c3\u30b1\u30fc\u30b8\u66f4\u65b0\u3092\u3059\u308b\u3068\u65b0\u3057\u3044apt\u304c\u3084\u3063\u3066\u304d\u307e\u3057\u305f\uff0e\u305d\u3057\u3066apt-listchanges\u3067\u6c17\u306b\u306a\u308b\u8a18\u8ff0\u304c\u8868\u793a\u3055\u308c\u307e\u3057\u305f\uff0e\n\n\n\n$ zcat /usr/share/doc/apt/NEWS.Debian.gz | head\napt (2.9.11) unstable; urgency=medium\n\n The ftp, rsh, and ssh methods have been removed. They have been unsupported\n and disabled since 1.8. Please, migrate to http(s) instead, or contribute\n an sftp method.\n\n If you need ad hoc access to a remote repository, you can usually run\n `python3 -m http.server` on that machine and use SSH port forwarding to\n run HTTP over SSH.\n\n\n\nftp, rsh, ssh\u30e1\u30bd\u30c3\u30c9\u304c\u524a\u9664\u3055\u308c\u305f\u3088\u3046\u3067\u3059\uff0e\n\n\n\n\u4ee3\u308f\u308a\u306bhttp(s)\u306b\u79fb\u884c\u3059\u308b\u304b\uff0csftp\u30e1\u30bd\u30c3\u30c9\u306b\u8ca2\u732e\u3057\u3066\u304f\u3060\u3055\u3044\u3068\u306e\u3053\u3068\uff0e\n\n\n\u30a2\u30c9\u30db\u30c3\u30af\u30a2\u30af\u30bb\u30b9\u304c\u5fc5\u8981\u306a\u5834\u5408\u306fhttpd\u3092\u8d77\u52d5\u3057\u3066ssh\u30dd\u30fc\u30c8\u30d5\u30a9\u30ef\u30fc\u30c7\u30a3\u30f3\u30b0\u3092\u4f7f\u3044ssh\u7d4c\u7531\u3067http\u3092\u5229\u7528\u3059\u308b\u3088\u3046\u306b\u52e7\u3081\u3089\u308c\u3066\u3044\u307e\u3059\uff0e\n\n\n\u81ea\u5206\u306esid\u74b0\u5883\u306esource.list\u3092\u78ba\u8a8d\u3059\u308b\u3068http\u3060\u3051\uff0c/etc/apt/source.list.d/* \u3092\u78ba\u8a8d\u3059\u308b\u3068\u3053\u3053\u306f\u5168\u3066https\u3092\u5229\u7528\u3057\u3066\u3044\u307e\u3057\u305f\uff0e\u3068\u3044\u3046\u3053\u3068\u3067\u3053\u306e\u74b0\u5883\u306f\u3053\u306e\u307e\u307e\u3067\u5927\u4e08\u592b\u305d\u3046\u3067\u3059\uff0e\n\n\n\n$ grep ^deb\\ /etc/apt/sources.list\ndeb http://ftp.jp.debian.org/debian/ sid main contrib non-free non-free-firmware\n$ grep ^deb\\ /etc/apt/sources.list.d/*\n/etc/apt/sources.list.d/signal-xenial.list:deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main\n/etc/apt/sources.list.d/steam-stable.list:deb [arch=amd64,i386 signed-by=/usr/share/keyrings/steam.gpg] https://repo.steampowered.com/steam/ stable steam\n/etc/apt/sources.list.d/tailscale.list:deb [signed-by=/usr/share/keyrings/tailscale-archive-keyring.gpg] https://pkgs.tailscale.com/stable/debian sid main\n/etc/apt/sources.list.d/vscodium.list:deb [ signed-by=/usr/share/keyrings/vscodium-archive-keyring.gpg ] https://download.vscodium.com/debs vscodium main\n/etc/apt/sources.list.d/wezterm.list:deb [signed-by=/usr/share/keyrings/wezterm-fury.gpg] https://apt.fury.io/wez/ * *\n\n\n\n\u8a66\u3057\u306bsource.list\u3092ftp\u306b\u66f8\u304d\u63db\u3048\u3066\u8a66\u3057\u3066\u307f\u307e\u3059\uff0eftp\u3067\u30a2\u30af\u30bb\u30b9\u3067\u304d\u308b\u306e\u3092\u78ba\u8a8d\u3057\u305f\u30ea\u30dd\u30b8\u30c8\u30ea\u3092 apt edit-sources \u3067source.list\u3092\u66f8\u304d\u63db\u3048\u3053\u3053\u3067\u30b5\u30cb\u30bf\u30a4\u30ba\u30c1\u30a7\u30c3\u30af\u304c\u8d70\u3063\u3066\u3044\u308b\u306f\u305a\u306a\u306e\u3067\u3059\u304c\u7279\u306b\u4f55\u3082\u8a00\u308f\u308c\u305a\u66f8\u304d\u63db\u3048\u3089\u308c\u307e\u3057\u305f\uff0e\u305d\u306e\u5f8c apt update \u3092\u5b9f\u884c\u3057\u3066\u307f\u308b\u3068\u30a8\u30e9\u30fc\u3068\u306a\u308aftp\u306f\u4f7f\u3048\u307e\u305b\u3093\u3067\u3057\u305f\uff0e\n\n\n\n$ curl -s ftp://ftp.jp.debian.org/debian/dists/sid/InRelease | head\n-----BEGIN PGP SIGNED MESSAGE-----\nHash: SHA256\n\nOrigin: Debian\nLabel: Debian\nSuite: unstable\nCodename: sid\nChangelogs: https://metadata.ftp-master.debian.org/changelogs/@CHANGEPATH@_changelog\nDate: Thu, 21 Nov 2024 02:25:33 UTC\nValid-Until: Thu, 28 Nov 2024 02:25:33 UTC\n\n\n\n\n$ sudo apt update\n :\nError: The method driver /usr/lib/apt/methods/ftp could not be found.\nNotice: Is the package apt-transport-ftp installed?\n :\nError: Failed to fetch ftp://ftp.jp.debian.org/debian/dists/sid/InRelease \nError: Some index files failed to download. They have been ignored, or old ones used instead.\n\n\n\n\napt-transport-ftp \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u3044\u307e\u3059\u304b\u3068\u805e\u304b\u308c\u307e\u3059\u304c\u305d\u306e\u69d8\u306a\u3082\u306e\u306f\u306a\u3044\u306e\u3067\u3084\u306f\u308a\u4f7f\u3048\u306a\u3044\u3067\u3059\u306d\uff0e\n\u305d\u306e\u4ed6\u306eapt-transport\u306f\u3053\u3093\u306a\u611f\u3058\uff0c\u3053\u306e\u4e2d\u3067\u306fhttps\u3068tor\u3057\u304b\u4f7f\u3063\u305f\u3053\u3068\u304c\u306a\u3044\u6c17\u304c\u3057\u307e\u3059\uff0e\n\n\n\n$ apt-cache search apt-transport\napt - commandline package manager\napt-transport-https - transitional package for https support\nlibapt-pkg6.0t64 - package management runtime library\napt-transport-in-toto - apt transport method for in-toto supply chain verification\napt-transport-s3 - APT transport for privately held AWS S3 repositories\napt-transport-tor - APT transport for anonymous package downloads via Tor\n\n\n\n\u3068\u3044\u3046\u3053\u3068\u3067\uff0csid\u3092\u4f7f\u3063\u3066\u3044\u308b\u4eba\u306f\u5c11\u306a\u3044\u3067\u3057\u3087\u3046\u304c\u6b21\u306eDebian 13\u3042\u305f\u308a\u304b\u3089\u3053\u308c\u304c\u964d\u3063\u3066\u304f\u308b\u3068\u601d\u3046\u306e\u3067\u65b0\u305f\u306b\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u7528\u610f\u3059\u308b\u5834\u5408\u3084dist-upgrade\u6642\u306b\u6c17\u3092\u3064\u3051\u308b\u5fc5\u8981\u304c\u3042\u308a\u305d\u3046\u3067\u3059\uff0e\n\n\n\u74b0\u5883\n\n$ dpkg-query -W apt\napt 2.9.12\n$ lsb_release -dr\nDescription: Debian GNU/Linux trixie/sid\nRelease: n/a\n$ arch\nx86_64", "date_published": "2024-11-21T18:20:45+09:00", "date_modified": "2024-11-21T18:20:47+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "apt", "ftp", "rsh", "ssh", "Debian", "Linux", "sid" ] }, { "id": "https://matoken.org/blog/?p=4007", "url": "https://matoken.org/blog/2024/04/04/age-that-can-encrypt-and-decrypt-using-ssh-keys/", "title": "SSH\u9375\u3092\u4f7f\u3063\u305f\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316\u304c\u51fa\u6765\u308b age", "content_html": "
\n
\n
\n

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

\n
\n
\n

\"logo\"/

\n
\n\n

\n
\n
\n
\n

install

\n
\n
\n

\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
\ngo install \u3067\u306e\u5c0e\u5165\u3082 Go \u304c\u5165\u3063\u3066\u3044\u308c\u3070\u7c21\u5358\uff0cGitHub \u306e releases \u306b\u3082\u3044\u304f\u3064\u304b\u306e\u30d0\u30a4\u30ca\u30ea\u304c\u3042\u308a\u307e\u3059\uff0e
\n\u305d\u306e\u4ed6\u5404\u7a2e\u74b0\u5883\u306b\u3082\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u3042\u308b\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
Raspberry Pi OS \u3078\u306e age \u30d1\u30c3\u30b1\u30fc\u30b8\u5c0e\u5165
\n
\n
$ 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 > data.tar.gz.age\n    $ age --decrypt -i key.txt -o data.tar.gz data.tar.gz.age
\n
\n
\n
\n
\n
\n

age key \u3067\u306e\u5229\u7528

\n
\n
\n

age-keygen \u30b3\u30de\u30f3\u30c9\u3067 age \u7528\u306e\u9375\u30da\u30a2\u304c\u751f\u6210\u3067\u304d\u307e\u3059\uff0e public key \u3092\u5171\u6709\u3057\u307e\u3059\uff0e

\n
\n
\n
\u9375\u306e\u751f\u6210
\n
\n
$ 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
\n
\n
\n
\n

age public key \u3067\u6697\u53f7\u5316\uff0cage secret key \u3067\u5fa9\u53f7\u5316\u3057\u307e\u3059\uff0e

\n
\n
\n
\u9375\u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316
\n
\n
$ echo 'plain' > data\n$ age -o data.age -r age1asle7pc9uj5n3fxamxst286ejh24yv5nut0qtedmadsxdm38egvs6ez9jr data (1)\n$ age --decrypt -i key.txt -o - data.age (2)\nplain\n$ age -o data.age -r age1asle7pc9uj5n3fxamxst286ejh24yv5nut0qtedmadsxdm38egvs6ez9jr \\\n    -r age1vz7kedcgzvzk4n4ke50wdxthll9g3muhgwlv3vz37g926frzjvvst777qe data (3)\n$ age --decrypt -i key.txt -o - data.age (4)\nplain\n$ age --decrypt -i key2.txt -o - data.age (5)\nplain
\n
\n
\n
\n
\n
\n

\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316

\n
\n
\n
\u6697\u53f7\u5316
\n
\n
$ age --passphrase -o data.age data (1)\nEnter passphrase (leave empty to autogenerate a secure one):\nConfirm passphrase:\n$ age --passphrase -o data.age data (2)\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 (3)\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-----
\n
\n
\n
\n
    \n
  1. \u81ea\u5206\u3067\u6c7a\u3081\u305f\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3067\u6697\u53f7\u5316\u3057\u307e\u3059
  2. \n
  3. \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
  4. \n
  5. -a/–armor \u30aa\u30d7\u30b7\u30e7\u30f3\u3067 PEM \u5f62\u5f0f\u3067\u51fa\u529b\uff0e
  6. \n
\n
\n
\n
\u5fa9\u53f7\u5316
\n
\n
$ 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
\n
\n
\n
\n
\n
\n

ssh\u9375\u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316

\n
\n
\n

\u3053\u308c\u3092\u8a66\u3057\u305f\u304b\u3063\u305f\u306e\u3067\u3057\u305f\uff0e

\n
\n
\n
ed25519 \u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316
\n
\n
$ 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
\n
\n
\n
\n
RSA \u3067\u6697\u53f7\u5316
\n
\n
$ 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-----
\n
\n
\n
\n

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

\n
\n
\n
\u8907\u6570\u306e\u9375\u3067\u6697\u53f7\u5316
\n
\n
$ 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-----
\n
\n
\n
\n

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)

\n
\n
\n
age \u4f5c\u8005\u306e\u9375\u3092\u5165\u624b\u3057\u3066\u6697\u53f7\u5316\u2026\u2026\u5931\u6557
\n
\n
$ 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>/dev/null; echo\necdsa-sha2-nistp256
\n
\n
\n
\n

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

\n
\n
\n\n\n\n\n\n\n\n
\n
Note
\n
\n\n
\n
\n
\n

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
\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

\n
\n
\n
\u74b0\u5883
\n
\n
$ 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
\n
\n
\n
\n
\n", "content_text": "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\n\n\n\n\n\n\nFiloSottile/age: A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.\n\n\n\n\n\n\ninstall\n\n\n\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\ngo install \u3067\u306e\u5c0e\u5165\u3082 Go \u304c\u5165\u3063\u3066\u3044\u308c\u3070\u7c21\u5358\uff0cGitHub \u306e releases \u306b\u3082\u3044\u304f\u3064\u304b\u306e\u30d0\u30a4\u30ca\u30ea\u304c\u3042\u308a\u307e\u3059\uff0e\n\u305d\u306e\u4ed6\u5404\u7a2e\u74b0\u5883\u306b\u3082\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u3042\u308b\u3088\u3046\u3067\u3059\uff0e\n\n\nRaspberry Pi OS \u3078\u306e age \u30d1\u30c3\u30b1\u30fc\u30b8\u5c0e\u5165\n\n$ 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 > data.tar.gz.age\n $ age --decrypt -i key.txt -o data.tar.gz data.tar.gz.age\n\n\n\n\n\nage key \u3067\u306e\u5229\u7528\n\n\nage-keygen \u30b3\u30de\u30f3\u30c9\u3067 age \u7528\u306e\u9375\u30da\u30a2\u304c\u751f\u6210\u3067\u304d\u307e\u3059\uff0e public key \u3092\u5171\u6709\u3057\u307e\u3059\uff0e\n\n\n\u9375\u306e\u751f\u6210\n\n$ 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\n\n\n\nage public key \u3067\u6697\u53f7\u5316\uff0cage secret key \u3067\u5fa9\u53f7\u5316\u3057\u307e\u3059\uff0e\n\n\n\u9375\u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316\n\n$ echo 'plain' > data\n$ age -o data.age -r age1asle7pc9uj5n3fxamxst286ejh24yv5nut0qtedmadsxdm38egvs6ez9jr data (1)\n$ age --decrypt -i key.txt -o - data.age (2)\nplain\n$ age -o data.age -r age1asle7pc9uj5n3fxamxst286ejh24yv5nut0qtedmadsxdm38egvs6ez9jr \\\n -r age1vz7kedcgzvzk4n4ke50wdxthll9g3muhgwlv3vz37g926frzjvvst777qe data (3)\n$ age --decrypt -i key.txt -o - data.age (4)\nplain\n$ age --decrypt -i key2.txt -o - data.age (5)\nplain\n\n\n\n\n\n\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316\n\n\n\u6697\u53f7\u5316\n\n$ age --passphrase -o data.age data (1)\nEnter passphrase (leave empty to autogenerate a secure one):\nConfirm passphrase:\n$ age --passphrase -o data.age data (2)\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 (3)\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-----\n\n\n\n\n\u81ea\u5206\u3067\u6c7a\u3081\u305f\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3067\u6697\u53f7\u5316\u3057\u307e\u3059\n\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\n-a/–armor \u30aa\u30d7\u30b7\u30e7\u30f3\u3067 PEM \u5f62\u5f0f\u3067\u51fa\u529b\uff0e\n\n\n\n\u5fa9\u53f7\u5316\n\n$ 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\n\n\n\n\n\nssh\u9375\u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316\n\n\n\u3053\u308c\u3092\u8a66\u3057\u305f\u304b\u3063\u305f\u306e\u3067\u3057\u305f\uff0e\n\n\ned25519 \u3067\u6697\u53f7\u5316\uff0c\u5fa9\u53f7\u5316\n\n$ 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\n\n\n\nRSA \u3067\u6697\u53f7\u5316\n\n$ 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-----\n\n\n\nRSA1024 \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\n\n\n\u8907\u6570\u306e\u9375\u3067\u6697\u53f7\u5316\n\n$ 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-----\n\n\n\nRSA, 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)\n\n\nage \u4f5c\u8005\u306e\u9375\u3092\u5165\u624b\u3057\u3066\u6697\u53f7\u5316\u2026\u2026\u5931\u6557\n\n$ 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>/dev/null; echo\necdsa-sha2-nistp256\n\n\n\nGitHub \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\n\n\n\n\n\n\nNote\n\n\n\n\u9375\u306e\u5165\u624b\u4f8b\n\nCodeberg\nhttps://codeberg.org/${USERNAME}.keys\nGithub\nhttps://github.com/${USERNAME}.keys\nGitLab\nhttps://gitlab.com/${USERNAME}.keys\nLaunchpad\nhttps://launchpad.net/~${USERNAME}/+sshkeys\n\n\n\n\n\n\n\n\nGPG \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\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\n\n\n\u74b0\u5883\n\n$ 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", "date_published": "2024-04-04T20:36:16+09:00", "date_modified": "2024-04-04T20:36:18+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "age", "encryption", "OpenSSH", "ssh", "bookworm", "Linux", "Raspberry Pi OS" ] }, { "id": "https://matoken.org/blog/?p=3946", "url": "https://matoken.org/blog/2023/12/21/delegate-telnet-ssh-gateway/", "title": "DeleGate \u3092Telnet SSH gateway \u3068\u3057\u3066\u52d5\u304b\u3059", "content_html": "
\n

\u9e7f\u5150\u5cf6Linux \u52c9\u5f37\u4f1a 2023.11 \u3067DelGate \u3092\u6700\u8fd1\u306e\u30c7\u30a3\u30b9\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u3067\u3067\u52d5\u304b\u3059\u8a71\u304c\u3042\u3063\u305f\u306e\u3067\u30e1\u30e2\uff0e

\n
\n

\n
\n

\u4ee5\u4e0b\u306eDeleGate \u306e\u9805\u76ee\u306e\u901a\u308a\uff0e

\n
\n
\n\n
\n
\n
\n
$ wget ftp://ftp.delegate.org/pub/DeleGate/delegate9.9.13.tar.gz ftp://ftp.delegate.org/pub/DeleGate/delegate9.9.13.tar.sign\n$ tar xf delegate9.9.13.tar.gz\n$ wget https://i-red.info/docs/dg2204.patch\n$ cd delegate9.9.13\n$ patch -p0 < ../dg2204.patch\n$ make CFLAGS=\"-Wno-narrowing -DHCASE=1\"
\n
\n
\n
\n\n\n\n\n\n\n\n
\n
Note
\n
\n\u624b\u5143\u3067\u306f Debian sid amd64 \u53ca\u3073 Raspberry Pi OS bullseye armhf \u3067\u78ba\u8a8d\u3057\u307e\u3057\u305f\uff0e
\n
\n
\n

\u4eca\u56de\u8a66\u3057\u305f\u304b\u3063\u305f\u306e\u306f\u4ee5\u4e0b\u306e Telnet \u2192 SSH \u306e gateway

\n
\n
\n\n
\n
\n
ERROR\u306f\u51fa\u308b\u3051\u3069\u8d77\u52d5\u3057\u307e\u3059
\n
\n
$ src/delegated -P8023 SERVER=telnet://-ssh\n-- ERROR: can't link the SSL/Crypto library.\n-- Hint: use -vl option to trace the required library,\n--- find it (ex. libssl.so.X.Y.Z) under /usr/lib or /lib,\n--- then set the library version as DYLIB='+,lib*.so.X.Y.Z'\n<DeleGate/9.9.13> [17373] -P8023 READY
\n
\n
\n
\n
DeleGate \u7d4c\u7531\u3067SSH \u51fa\u6765\u307e\u3059
\n
\n
$ nc localhost 8023\n''--\n--  @ @  localhost PROXY-telnet server DeleGate/9.9.13\n-- ( - ) { Hit '?' or enter `help' for help. }\nDeleGate/9.9.13 (October 31, 2014)\nAIST-Product-ID: 2000-ETL-198715-01, H14PRO-049, H15PRO-165, H18PRO-443\nCopyright (c) 1994-2000 Yutaka Sato and ETL,AIST,MITI\nCopyright (c) 2001-2014 National Institute of Advanced Industrial Science and Technology (AIST)\nWWW: http://www.delegate.org/delegate/\n-- -- -- This (proxy) service is maintained by 'matoken@gmail.com'\n\n>> Host name: matoken@localhost
\n
\n
\n
\n

\u30ab\u30a8\u30eb\u61d0\u304b\u3057\u3044\u3067\u3059\u306d\uff0e

\n
\n", "content_text": "\u9e7f\u5150\u5cf6Linux \u52c9\u5f37\u4f1a 2023.11 \u3067DelGate \u3092\u6700\u8fd1\u306e\u30c7\u30a3\u30b9\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u3067\u3067\u52d5\u304b\u3059\u8a71\u304c\u3042\u3063\u305f\u306e\u3067\u30e1\u30e2\uff0e\n\n\n\n\u4ee5\u4e0b\u306eDeleGate \u306e\u9805\u76ee\u306e\u901a\u308a\uff0e\n\n\n\nResetting Linux ( and DeleGate + Postfix )\n\n\n\n\n$ wget ftp://ftp.delegate.org/pub/DeleGate/delegate9.9.13.tar.gz ftp://ftp.delegate.org/pub/DeleGate/delegate9.9.13.tar.sign\n$ tar xf delegate9.9.13.tar.gz\n$ wget https://i-red.info/docs/dg2204.patch\n$ cd delegate9.9.13\n$ patch -p0 < ../dg2204.patch\n$ make CFLAGS=\"-Wno-narrowing -DHCASE=1\"\n\n\n\n\n\n\n\nNote\n\n\n\u624b\u5143\u3067\u306f Debian sid amd64 \u53ca\u3073 Raspberry Pi OS bullseye armhf \u3067\u78ba\u8a8d\u3057\u307e\u3057\u305f\uff0e\n\n\n\n\n\n\u4eca\u56de\u8a66\u3057\u305f\u304b\u3063\u305f\u306e\u306f\u4ee5\u4e0b\u306e Telnet \u2192 SSH \u306e gateway\n\n\n\nDeleGate version 9.9 \u30ea\u30d5\u30a1\u30ec\u30f3\u30b9\u30de\u30cb\u30e5\u30a2\u30eb \u306e\u65e5\u672c\u8a9e\u8a33 / Telnet gateway to <A Href=Manual.htm?SSH id=hgen>SSH</A> server\n\n\n\nERROR\u306f\u51fa\u308b\u3051\u3069\u8d77\u52d5\u3057\u307e\u3059\n\n$ src/delegated -P8023 SERVER=telnet://-ssh\n-- ERROR: can't link the SSL/Crypto library.\n-- Hint: use -vl option to trace the required library,\n--- find it (ex. libssl.so.X.Y.Z) under /usr/lib or /lib,\n--- then set the library version as DYLIB='+,lib*.so.X.Y.Z'\n<DeleGate/9.9.13> [17373] -P8023 READY\n\n\n\nDeleGate \u7d4c\u7531\u3067SSH \u51fa\u6765\u307e\u3059\n\n$ nc localhost 8023\n''--\n-- @ @ localhost PROXY-telnet server DeleGate/9.9.13\n-- ( - ) { Hit '?' or enter `help' for help. }\nDeleGate/9.9.13 (October 31, 2014)\nAIST-Product-ID: 2000-ETL-198715-01, H14PRO-049, H15PRO-165, H18PRO-443\nCopyright (c) 1994-2000 Yutaka Sato and ETL,AIST,MITI\nCopyright (c) 2001-2014 National Institute of Advanced Industrial Science and Technology (AIST)\nWWW: http://www.delegate.org/delegate/\n-- -- -- This (proxy) service is maintained by 'matoken@gmail.com'\n\n>> Host name: matoken@localhost\n\n\n\n\u30ab\u30a8\u30eb\u61d0\u304b\u3057\u3044\u3067\u3059\u306d\uff0e", "date_published": "2023-12-21T20:07:00+09:00", "date_modified": "2023-12-21T09:08:31+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "delegate", "ssh", "telnet", "bullseye", "Debian", "Linux", "Raspberry Pi OS", "sid" ] }, { "id": "http://matoken.org/blog/?p=3450", "url": "https://matoken.org/blog/2022/02/28/mosh-does-not-start/", "title": "mosh\u304c\u8d77\u52d5\u3057\u306a\u304f\u306a\u3063\u3066\u56f0\u308b", "content_html": "

\n

Debian sid amd64\u74b0\u5883\u3067mosh\u304c\u52d5\u304b\u306a\u304f\u306a\u3063\u305f\uff0e

\n\n\n\n\n\n\n
\n
$ mosh\nIO.c: loadable library and perl binaries are mismatched (got handshake key 0xed00080, needed 0xeb00080)
\n
\n

\n\n

mosh-client\u306f\u52d5\u304f\u3051\u3069 ~/.ssh/config \u3092\u898b\u3066\u304f\u308c\u306a\u3044\u306e\u3067\u9762\u5012

\n\n\n\n\n\n\n
\n
$ mosh-client\nmosh-client (mosh 1.3.2) [build mosh 1.3.2]\nCopyright 2012 Keith Winstein <mosh-devel@mit.edu>\nLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\nUsage: mosh-client [-# 'ARGS'] IP PORT\n       mosh-client -c
\n
\n

mosh \u306f perl script

\n\n\n\n\n\n\n
\n
$ file /bin/mosh\n/bin/mosh: Perl script text executable\n$ grep -v ^# /bin/mosh | head\n\n\nuse 5.8.8;\n\nuse warnings;\nuse strict;\nuse Getopt::Long;\nuse IO::Socket;\nuse Text::ParseWords;\nuse Socket qw(IPPROTO_TCP);
\n
\n

mosh-client \u306felf

\n\n\n\n\n\n\n
\n
$ file /bin/mosh-client\n/bin/mosh-client: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=9145424edb62c61b0081efeaa68ea20a25a73e5f, for GNU/Linux 3.2.0, stripped
\n
\n

sid\u3060\u3057Perl\u306e\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3082\u3042\u3063\u305f\u306e\u3067\u305d\u306e\u305b\u3044\u304b\u306a\u3068\u601d\u3063\u3066\u3044\u305f\u3051\u3069\u3057\u3070\u3089\u304f\u7d4c\u3063\u3066\u3082\u76f4\u3089\u306a\u3044\uff0e

\n

cpan\u3084cpanm\u3082\u52d5\u304b\u306a\u3044\uff0ecpan\u306f ~/perl5 \u3092\u898b\u3066\u3044\u308b\uff0e
\n\u6700\u8fd1Debian sid\u306ePerl\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u4e0a\u304c\u3063\u305f\u306e\u306b ~/perl5 \u3092\u66f4\u65b0\u3057\u3066\u3044\u306a\u3044\u306e\u3067\u4e0d\u6574\u5408\u3068\u306a\u3063\u3066\u3044\u305f\u3088\u3046\uff0e
\n\u4e00\u65e6 ~/perl5 \u3092\u9000\u907f\u3057\u3066\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\uff0e
\n\u30c7\u30a3\u30b9\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u6642\u306a\u3069\u306b\u3082\u5d4c\u308a\u305d\u3046\uff0e

\n\n\n\n\n\n\n
\n
$ cpanm --list\nIO.c: loadable library and perl binaries are mismatched (got handshake key 0xed00080, needed 0xeb00080)\n$ which cpan\n/home/matoken/perl5/bin/cpan\n$ which cpan\n/home/matoken/perl5/bin/cpan\n$ mosh\nUsage: /usr/bin/mosh [options] [--] [user@]host [command...]\n        --client=PATH        mosh client on local machine\n                                (default: \"mosh-client\")\n        --server=COMMAND     mosh server on remote machine\n                                (default: \"mosh-server\")\n\n        --predict=adaptive      local echo for slower links [default]\n-a      --predict=always        use local echo even on fast links\n-n      --predict=never         never use local echo\n        --predict=experimental  aggressively echo even when incorrect\n\n-4      --family=inet        use IPv4 only\n-6      --family=inet6       use IPv6 only\n        --family=auto        autodetect network type for single-family hosts only\n        --family=all         try all network types\n        --family=prefer-inet use all network types, but try IPv4 first [default]\n        --family=prefer-inet6 use all network types, but try IPv6 first\n-p PORT[:PORT2]\n        --port=PORT[:PORT2]  server-side UDP port or range\n                                (No effect on server-side SSH port)\n        --bind-server={ssh|any|IP}  ask the server to reply from an IP address\n                                       (default: \"ssh\")\n\n        --ssh=COMMAND        ssh command to run when setting up session\n                                (example: \"ssh -p 2222\")\n                                (default: \"ssh\")\n\n        --no-ssh-pty         do not allocate a pseudo tty on ssh connection\n\n        --no-init            do not send terminal initialization string\n\n        --local              run mosh-server locally without using ssh\n\n        --experimental-remote-ip=(local|remote|proxy)  select the method for\n                             discovering the remote IP address to use for mosh\n                             (default: \"proxy\")\n\n        --help               this message\n        --version            version and copyright information\n\nPlease report bugs to mosh-devel@mit.edu.\nMosh home page: https://mosh.org
\n
\n

\u74b0\u5883

\n\n\n\n\n\n\n
\n
$ dpkg-query -W mosh perl\nmosh    1.3.2-2.1+b3\nperl    5.34.0-3\n$ lsb_release -dr\nDescription:    Debian GNU/Linux bookworm/sid\nRelease:        unstable\n$ arch\nx86_64
\n
\n", "content_text": "Debian sid amd64\u74b0\u5883\u3067mosh\u304c\u52d5\u304b\u306a\u304f\u306a\u3063\u305f\uff0e\n\n\n\n\n$ mosh\nIO.c: loadable library and perl binaries are mismatched (got handshake key 0xed00080, needed 0xeb00080)\n\n\n\n\n\n\n\nMosh: the mobile shell\n\nmosh-client\u306f\u52d5\u304f\u3051\u3069 ~/.ssh/config \u3092\u898b\u3066\u304f\u308c\u306a\u3044\u306e\u3067\u9762\u5012\n\n\n\n\n$ mosh-client\nmosh-client (mosh 1.3.2) [build mosh 1.3.2]\nCopyright 2012 Keith Winstein <mosh-devel@mit.edu>\nLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.\nThis is free software: you are free to change and redistribute it.\nThere is NO WARRANTY, to the extent permitted by law.\n\nUsage: mosh-client [-# 'ARGS'] IP PORT\n mosh-client -c\n\n\n\n\nmosh \u306f perl script\n\n\n\n\n$ file /bin/mosh\n/bin/mosh: Perl script text executable\n$ grep -v ^# /bin/mosh | head\n\n\nuse 5.8.8;\n\nuse warnings;\nuse strict;\nuse Getopt::Long;\nuse IO::Socket;\nuse Text::ParseWords;\nuse Socket qw(IPPROTO_TCP);\n\n\n\n\nmosh-client \u306felf\n\n\n\n\n$ file /bin/mosh-client\n/bin/mosh-client: ELF 64-bit LSB pie executable, x86-64, version 1 (GNU/Linux), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=9145424edb62c61b0081efeaa68ea20a25a73e5f, for GNU/Linux 3.2.0, stripped\n\n\n\n\nsid\u3060\u3057Perl\u306e\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3082\u3042\u3063\u305f\u306e\u3067\u305d\u306e\u305b\u3044\u304b\u306a\u3068\u601d\u3063\u3066\u3044\u305f\u3051\u3069\u3057\u3070\u3089\u304f\u7d4c\u3063\u3066\u3082\u76f4\u3089\u306a\u3044\uff0e\ncpan\u3084cpanm\u3082\u52d5\u304b\u306a\u3044\uff0ecpan\u306f ~/perl5 \u3092\u898b\u3066\u3044\u308b\uff0e\n\u6700\u8fd1Debian sid\u306ePerl\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u4e0a\u304c\u3063\u305f\u306e\u306b ~/perl5 \u3092\u66f4\u65b0\u3057\u3066\u3044\u306a\u3044\u306e\u3067\u4e0d\u6574\u5408\u3068\u306a\u3063\u3066\u3044\u305f\u3088\u3046\uff0e\n\u4e00\u65e6 ~/perl5 \u3092\u9000\u907f\u3057\u3066\u52d5\u4f5c\u3059\u308b\u3088\u3046\u306b\uff0e\n\u30c7\u30a3\u30b9\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u6642\u306a\u3069\u306b\u3082\u5d4c\u308a\u305d\u3046\uff0e\n\n\n\n\n$ cpanm --list\nIO.c: loadable library and perl binaries are mismatched (got handshake key 0xed00080, needed 0xeb00080)\n$ which cpan\n/home/matoken/perl5/bin/cpan\n$ which cpan\n/home/matoken/perl5/bin/cpan\n$ mosh\nUsage: /usr/bin/mosh [options] [--] [user@]host [command...]\n --client=PATH mosh client on local machine\n (default: \"mosh-client\")\n --server=COMMAND mosh server on remote machine\n (default: \"mosh-server\")\n\n --predict=adaptive local echo for slower links [default]\n-a --predict=always use local echo even on fast links\n-n --predict=never never use local echo\n --predict=experimental aggressively echo even when incorrect\n\n-4 --family=inet use IPv4 only\n-6 --family=inet6 use IPv6 only\n --family=auto autodetect network type for single-family hosts only\n --family=all try all network types\n --family=prefer-inet use all network types, but try IPv4 first [default]\n --family=prefer-inet6 use all network types, but try IPv6 first\n-p PORT[:PORT2]\n --port=PORT[:PORT2] server-side UDP port or range\n (No effect on server-side SSH port)\n --bind-server={ssh|any|IP} ask the server to reply from an IP address\n (default: \"ssh\")\n\n --ssh=COMMAND ssh command to run when setting up session\n (example: \"ssh -p 2222\")\n (default: \"ssh\")\n\n --no-ssh-pty do not allocate a pseudo tty on ssh connection\n\n --no-init do not send terminal initialization string\n\n --local run mosh-server locally without using ssh\n\n --experimental-remote-ip=(local|remote|proxy) select the method for\n discovering the remote IP address to use for mosh\n (default: \"proxy\")\n\n --help this message\n --version version and copyright information\n\nPlease report bugs to mosh-devel@mit.edu.\nMosh home page: https://mosh.org\n\n\n\n\n\u74b0\u5883\n\n\n\n\n$ dpkg-query -W mosh perl\nmosh 1.3.2-2.1+b3\nperl 5.34.0-3\n$ lsb_release -dr\nDescription: Debian GNU/Linux bookworm/sid\nRelease: unstable\n$ arch\nx86_64", "date_published": "2022-02-28T23:33:57+09:00", "date_modified": "2022-03-01T00:38:24+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "mosh", "Perl", "ssh", "Debian", "Linux", "sid" ] }, { "id": "http://matoken.org/blog/?p=2443", "url": "https://matoken.org/blog/2019/07/29/sshuttle-gets-an-error/", "title": "sshuttle \u304c\u30a8\u30e9\u30fc\u306b\u306a\u308b", "content_html": "
\n
\n
\n

SSH VPN \u304c\u304a\u624b\u8efd\u306b\u5229\u7528\u3067\u304d\u308b sshuttle \u3092\u4e45\u3005\u306b\u4f7f\u304a\u3046\u3068\u3057\u305f\u3089\u5931\u6557\u3057\u307e\u3059\uff0e\u3044\u304f\u3064\u304b\u306eremotehost\u3092\u8a66\u3057\u3066\u3082\u3046\u307e\u304f\u3044\u304b\u306a\u3044\uff0e

\n
\n\n
\n
\n
\n

Debian sid \u74b0\u5883\u3067\u306e\u30a8\u30e9\u30fc

\n
\n
\n
\n
$ sshuttle -v -r user@remotehost 0/0\r\nStarting sshuttle proxy.\r\nfirewall manager: Starting firewall with Python version 3.7.4\r\nfirewall manager: ready method name nat.\r\nIPv6 enabled: False\r\nUDP enabled: False\r\nDNS enabled: False\r\nUser enabled: False\r\nTCP redirector listening on ('127.0.0.1', 12300).\r\nStarting client with Python version 3.7.4\r\nc : connecting to server...\r\nHost key fingerprint is SHA256:kUoWT4bCu7+HiegN9R5tYqO5nnvpQPobzSk46T8WEwU\r\n+---[ECDSA 256]---+\r\n|   .E...o        |\r\n|    o o= .       |\r\n|     +o +        |\r\n|    oo . .       |\r\n|    oo. S        |\r\n|   *++ o         |\r\n|  *.+=X+o        |\r\n| ..=+X*=.        |\r\n| .o+%B+o         |\r\n+----[SHA256]-----+\r\nEnter passphrase for key '/home/matoken/.ssh/id_ed25519':\r\nAuthenticated to nnn.nnn.nnn.nnn ([nnn.nnn.nnn.nnn]:nn).\r\n-c:3: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses\r\nStarting server with Python version 3.7.3\r\n s: latency control setting = True\r\nc : Connected.\r\n s: auto-nets:False\r\nfirewall manager: setting up.\r\n>> iptables -t nat -N sshuttle-12300\r\n>> iptables -t nat -F sshuttle-12300\r\n>> iptables -t nat -I OUTPUT 1 -j sshuttle-12300\r\n>> iptables -t nat -I PREROUTING 1 -j sshuttle-12300\r\n>> iptables -t nat -A sshuttle-12300 -j RETURN --dest 127.0.0.1/32 -p tcp\r\n>> iptables -t nat -A sshuttle-12300 -j REDIRECT --dest 0.0.0.0/0 -p tcp --to-ports 12300 -m ttl ! --ttl 42\r\nfirewall manager: undoing changes.\r\n>> iptables -t nat -D OUTPUT -j sshuttle-12300\r\n>> iptables -t nat -D PREROUTING -j sshuttle-12300\r\n>> iptables -t nat -F sshuttle-12300\r\n>> iptables -t nat -X sshuttle-12300\r\nc : fatal: server died with error code 255
\n
\n
\n
\n

\u6700\u5f8c\u306e\u884c\u306e\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u691c\u7d22\u3059\u308b\u3068\u4ee5\u4e0b\u306eIssue \u3092\u898b\u3064\u3051\u307e\u3057\u305f\uff0e

\n
\n\n
\n

\u53c2\u8003\u306b\u3057\u3066 -x remotehostip \u3067\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e-x \u306f\u9664\u5916\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u63a5\u7d9a\u5148\u306eip \u3092\u6307\u5b9a\u3057\u3066\u9664\u5916\u3059\u308b\u3068OK\u306e\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
    \n
  • \n

    NG $ sshuttle -r user@remotehost 0/0

    \n
  • \n
  • \n

    OK $ sshuttle -r user@remotehost 0/0 -x remotehostip

    \n
  • \n
\n
\n
\n

VPN \u5bfe\u8c61\u306e\u30b5\u30d6\u30cd\u30c3\u30c8\u3068\u540c\u69d8 -x \u306b\u3082\u8907\u6570\u306e\u30b5\u30d6\u30cd\u30c3\u30c8/ip \u306e\u6307\u5b9a\u304c\u3067\u304d\u307e\u3059\uff0e

\n
\n
\n
Debian sid \u74b0\u5883
\n
\n
$ dpkg-query -W sshuttle\r\nsshuttle        0.78.5-1\r\n$ hostnamectl|grep -E 'Operating System|Architecture'\r\n  Operating System: Debian GNU/Linux bullseye/sid\r\n\t  Architecture: x86-64
\n
\n
\n
\n
\n
\n

Raspbian Buster \u74b0\u5883\u3067\u306e\u30a8\u30e9\u30fc

\n
\n
\n

\u3061\u306a\u307f\u306b sshuttle \u3092 Raspbian Buster \u3067\u8a66\u3059\u3068\u307e\u305f\u9055\u3046\u3053\u3093\u306a\u30a8\u30e9\u30fc\u306b\uff0e\u3067\u3082\u3084\u3063\u3071\u308a -x \u3067\u89e3\u6c7a\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n
Raspbian Buster \u3067\u306e error message
\n
\n
 :\r\nclient: Connected.\r\npacket_write_wait: Connection to 192.168.1.102 port 22: Broken pipe\r\nTraceback (most recent call last):\r\n  File \"/usr/bin/sshuttle\", line 11, in <module>\r\n\tload_entry_point('sshuttle==0.78.5', 'console_scripts', 'sshuttle')()\r\n  File \"/usr/lib/python3/dist-packages/sshuttle/cmdline.py\", line 82, in main\r\n\topt.sudo_pythonpath)\r\n  File \"/usr/lib/python3/dist-packages/sshuttle/client.py\", line 787, in main\r\n\tseed_hosts, auto_hosts, auto_nets, daemon, to_nameserver)\r\n  File \"/usr/lib/python3/dist-packages/sshuttle/client.py\", line 547, in _main\r\n\tssnet.runonce(handlers, mux)\r\n  File \"/usr/lib/python3/dist-packages/sshuttle/ssnet.py\", line 598, in runonce\r\n\th.callback(s)\r\n  File \"/usr/lib/python3/dist-packages/sshuttle/ssnet.py\", line 488, in callback\r\n\tself.flush()\r\n  File \"/usr/lib/python3/dist-packages/sshuttle/ssnet.py\", line 439, in flush\r\n\twrote = _nb_clean(os.write, self.wsock.fileno(), self.outbuf[0])\r\n  File \"/usr/lib/python3/dist-packages/sshuttle/ssnet.py\", line 79, in _nb_clean\r\n\treturn func(*args)\r\nBrokenPipeError: [Errno 32] Broken pipe
\n
\n
\n
\n
Raspbian Buster \u306e\u74b0\u5883
\n
\n
$ dpkg-query -W sshuttle\r\nsshuttle        0.78.5-1\r\n$ lsb_release -d\r\nDescription:    Raspbian GNU/Linux 10 (buster)\r\n$ uname -m\r\narmv6l\r\n$ cat /proc/device-tree/model ;echo\r\nRaspberry Pi Model B Rev 2
\n
\n
\n
\n
\n
\n

Ubuntu 18.04 LTS \u74b0\u5883(OK)

\n
\n
\n

Ubuntu 18.04 LTS \u306esshuttle \u3067\u3082\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u304c\u3053\u308c\u306f -x \u3092\u4ed8\u3051\u306a\u304f\u3066\u3082\u554f\u984c\u306a\u3057\u3067\u3057\u305f\uff0esshuttle 0.78.4 \u301c 0.78.5 \u306e\u9593\u306e\u4fee\u6b63\u3067\u306e\u5f71\u97ff\u3067\u3057\u3087\u3046\u304b?

\n
\n
\n
error \u306e\u51fa\u306a\u304b\u3063\u305f\u74b0\u5883
\n
\n
$ dpkg-query -W sshuttle\r\nsshuttle        0.78.3-1ubuntu1\r\n$ lsb_release -d\r\nDescription:    Ubuntu 18.04.2 LTS\r\n$ uname -m\r\nx86_64
\n
\n
\n
\n
\n

\n", "content_text": "SSH VPN \u304c\u304a\u624b\u8efd\u306b\u5229\u7528\u3067\u304d\u308b sshuttle \u3092\u4e45\u3005\u306b\u4f7f\u304a\u3046\u3068\u3057\u305f\u3089\u5931\u6557\u3057\u307e\u3059\uff0e\u3044\u304f\u3064\u304b\u306eremotehost\u3092\u8a66\u3057\u3066\u3082\u3046\u307e\u304f\u3044\u304b\u306a\u3044\uff0e\n\n\n\n\nGitHub – sshuttle/sshuttle: Transparent proxy server that works as a poor man’s VPN. Forwards over ssh. Doesn’t require admin. Works with Linux and MacOS. Supports DNS tunneling.\n\n\n\n\n\n\nDebian sid \u74b0\u5883\u3067\u306e\u30a8\u30e9\u30fc\n\n\n\n$ sshuttle -v -r user@remotehost 0/0\r\nStarting sshuttle proxy.\r\nfirewall manager: Starting firewall with Python version 3.7.4\r\nfirewall manager: ready method name nat.\r\nIPv6 enabled: False\r\nUDP enabled: False\r\nDNS enabled: False\r\nUser enabled: False\r\nTCP redirector listening on ('127.0.0.1', 12300).\r\nStarting client with Python version 3.7.4\r\nc : connecting to server...\r\nHost key fingerprint is SHA256:kUoWT4bCu7+HiegN9R5tYqO5nnvpQPobzSk46T8WEwU\r\n+---[ECDSA 256]---+\r\n| .E...o |\r\n| o o= . |\r\n| +o + |\r\n| oo . . |\r\n| oo. S |\r\n| *++ o |\r\n| *.+=X+o |\r\n| ..=+X*=. |\r\n| .o+%B+o |\r\n+----[SHA256]-----+\r\nEnter passphrase for key '/home/matoken/.ssh/id_ed25519':\r\nAuthenticated to nnn.nnn.nnn.nnn ([nnn.nnn.nnn.nnn]:nn).\r\n-c:3: DeprecationWarning: the imp module is deprecated in favour of importlib; see the module's documentation for alternative uses\r\nStarting server with Python version 3.7.3\r\n s: latency control setting = True\r\nc : Connected.\r\n s: auto-nets:False\r\nfirewall manager: setting up.\r\n>> iptables -t nat -N sshuttle-12300\r\n>> iptables -t nat -F sshuttle-12300\r\n>> iptables -t nat -I OUTPUT 1 -j sshuttle-12300\r\n>> iptables -t nat -I PREROUTING 1 -j sshuttle-12300\r\n>> iptables -t nat -A sshuttle-12300 -j RETURN --dest 127.0.0.1/32 -p tcp\r\n>> iptables -t nat -A sshuttle-12300 -j REDIRECT --dest 0.0.0.0/0 -p tcp --to-ports 12300 -m ttl ! --ttl 42\r\nfirewall manager: undoing changes.\r\n>> iptables -t nat -D OUTPUT -j sshuttle-12300\r\n>> iptables -t nat -D PREROUTING -j sshuttle-12300\r\n>> iptables -t nat -F sshuttle-12300\r\n>> iptables -t nat -X sshuttle-12300\r\nc : fatal: server died with error code 255\n\n\n\n\u6700\u5f8c\u306e\u884c\u306e\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u691c\u7d22\u3059\u308b\u3068\u4ee5\u4e0b\u306eIssue \u3092\u898b\u3064\u3051\u307e\u3057\u305f\uff0e\n\n\n\n\nsshuttle crashes with server died with error code 255 \u00b7 Issue #150 \u00b7 sshuttle/sshuttle \u00b7 GitHub\n\n\n\n\n\u53c2\u8003\u306b\u3057\u3066 -x remotehostip \u3067\u4f7f\u3048\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e-x \u306f\u9664\u5916\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u63a5\u7d9a\u5148\u306eip \u3092\u6307\u5b9a\u3057\u3066\u9664\u5916\u3059\u308b\u3068OK\u306e\u3088\u3046\u3067\u3059\uff0e\n\n\n\n\nNG $ sshuttle -r user@remotehost 0/0\n\n\nOK $ sshuttle -r user@remotehost 0/0 -x remotehostip\n\n\n\n\nVPN \u5bfe\u8c61\u306e\u30b5\u30d6\u30cd\u30c3\u30c8\u3068\u540c\u69d8 -x \u306b\u3082\u8907\u6570\u306e\u30b5\u30d6\u30cd\u30c3\u30c8/ip \u306e\u6307\u5b9a\u304c\u3067\u304d\u307e\u3059\uff0e\n\n\nDebian sid \u74b0\u5883\n\n$ dpkg-query -W sshuttle\r\nsshuttle 0.78.5-1\r\n$ hostnamectl|grep -E 'Operating System|Architecture'\r\n Operating System: Debian GNU/Linux bullseye/sid\r\n\t Architecture: x86-64\n\n\n\n\n\nRaspbian Buster \u74b0\u5883\u3067\u306e\u30a8\u30e9\u30fc\n\n\n\u3061\u306a\u307f\u306b sshuttle \u3092 Raspbian Buster \u3067\u8a66\u3059\u3068\u307e\u305f\u9055\u3046\u3053\u3093\u306a\u30a8\u30e9\u30fc\u306b\uff0e\u3067\u3082\u3084\u3063\u3071\u308a -x \u3067\u89e3\u6c7a\u3057\u307e\u3057\u305f\uff0e\n\n\nRaspbian Buster \u3067\u306e error message\n\n :\r\nclient: Connected.\r\npacket_write_wait: Connection to 192.168.1.102 port 22: Broken pipe\r\nTraceback (most recent call last):\r\n File \"/usr/bin/sshuttle\", line 11, in <module>\r\n\tload_entry_point('sshuttle==0.78.5', 'console_scripts', 'sshuttle')()\r\n File \"/usr/lib/python3/dist-packages/sshuttle/cmdline.py\", line 82, in main\r\n\topt.sudo_pythonpath)\r\n File \"/usr/lib/python3/dist-packages/sshuttle/client.py\", line 787, in main\r\n\tseed_hosts, auto_hosts, auto_nets, daemon, to_nameserver)\r\n File \"/usr/lib/python3/dist-packages/sshuttle/client.py\", line 547, in _main\r\n\tssnet.runonce(handlers, mux)\r\n File \"/usr/lib/python3/dist-packages/sshuttle/ssnet.py\", line 598, in runonce\r\n\th.callback(s)\r\n File \"/usr/lib/python3/dist-packages/sshuttle/ssnet.py\", line 488, in callback\r\n\tself.flush()\r\n File \"/usr/lib/python3/dist-packages/sshuttle/ssnet.py\", line 439, in flush\r\n\twrote = _nb_clean(os.write, self.wsock.fileno(), self.outbuf[0])\r\n File \"/usr/lib/python3/dist-packages/sshuttle/ssnet.py\", line 79, in _nb_clean\r\n\treturn func(*args)\r\nBrokenPipeError: [Errno 32] Broken pipe\n\n\n\nRaspbian Buster \u306e\u74b0\u5883\n\n$ dpkg-query -W sshuttle\r\nsshuttle 0.78.5-1\r\n$ lsb_release -d\r\nDescription: Raspbian GNU/Linux 10 (buster)\r\n$ uname -m\r\narmv6l\r\n$ cat /proc/device-tree/model ;echo\r\nRaspberry Pi Model B Rev 2\n\n\n\n\n\nUbuntu 18.04 LTS \u74b0\u5883(OK)\n\n\nUbuntu 18.04 LTS \u306esshuttle \u3067\u3082\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\u304c\u3053\u308c\u306f -x \u3092\u4ed8\u3051\u306a\u304f\u3066\u3082\u554f\u984c\u306a\u3057\u3067\u3057\u305f\uff0esshuttle 0.78.4 \u301c 0.78.5 \u306e\u9593\u306e\u4fee\u6b63\u3067\u306e\u5f71\u97ff\u3067\u3057\u3087\u3046\u304b?\n\n\nerror \u306e\u51fa\u306a\u304b\u3063\u305f\u74b0\u5883\n\n$ dpkg-query -W sshuttle\r\nsshuttle 0.78.3-1ubuntu1\r\n$ lsb_release -d\r\nDescription: Ubuntu 18.04.2 LTS\r\n$ uname -m\r\nx86_64", "date_published": "2019-07-29T23:55:46+09:00", "date_modified": "2019-07-30T00:00:48+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "ssh", "sshuttle", "Debian", "Linux", "Raspberry Pi", "Raspbian Buster", "sid" ] }, { "id": "http://matoken.org/blog/?p=2340", "url": "https://matoken.org/blog/2019/03/26/use-endlessh-to-handle-ssh-connections-very-slowly-and-harass-attackers/", "title": "Endlessh \u3092\u4f7f\u3063\u3066 ssh \u63a5\u7d9a\u3092\u3068\u3066\u3082\u3086\u3063\u304f\u308a\u3068\u51e6\u7406\u3057\u3066\u653b\u6483\u8005\u306b\u5acc\u304c\u3089\u305b\u3092\u3059\u308b", "content_html": "
\n

ssh \u306f\u653b\u6483\u304c\u591a\u3044\u3067\u3059\uff0e\u516c\u958b\u9375\u8a8d\u8a3c\u306b\u3057\u3066\u304a\u304f\u3068\u5927\u5206\u4fb5\u5165\u306b\u5f37\u304f\u306a\u308a\u307e\u3059\u304c\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u306b\u76f4\u63a5\u7e4b\u304c\u3063\u3066\u3044\u308b\u30b5\u30fc\u30d0\u3067\u306f\u653b\u6483\u306f\u3068\u3066\u3082\u591a\u3044\u3067\u3059\uff0e

\n
\n
\n

Endlessh \u306fsshd \u306e\u4ee3\u308f\u308a\u306b\u8d77\u52d5\u3057\u3066\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831\u3092\u9001\u308b\u524d\u306e\u30c7\u30fc\u30bf\u306b\u307b\u307c\u30e9\u30f3\u30c0\u30e0\u306a\u6587\u5b57\u5217\u3092\u3086\u3063\u304f\u308a\u3068\u914d\u4fe1\u3057\u7d9a\u3051\u3066\u653b\u6483\u8005\u306e\u8db3\u6b62\u3081\u3092\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u3088\u3046\u3067\u3059\uff0e
\n\u672c\u5f53\u306e sshd \u306f\u5225\u30dd\u30fc\u30c8\u3067\u8d77\u52d5\u3057\u3066\u305d\u3063\u3061\u3092\u4f7f\u3046\u611f\u3058\u3067\u3057\u3087\u3046\u304b\uff0e22\u756a\u3092\u7121\u304f\u3057\u3066 port knocking \u3084 sslh \u3092\u4f7f\u3046\u306a\u3069\u306e\u307b\u3046\u304c\u3044\u3044\u304b\u3082\u3067\u3059\u304c\u9762\u767d\u305d\u3046\u3067\u3059\uff0e

\n
\n
\n\n
\n
\n

\u3068\u3044\u3046\u3053\u3068\u3067\u624b\u5143\u3067\u5c11\u3057\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n
\n
\u5c0e\u5165\u3068\u30d3\u30eb\u30c9
\n
\n
$ git clone https://github.com/skeeto/endlessh\r\n$ cd endlessh\r\n$ git log |head -1\r\ncommit 548a7b1521b2912e7e133d0d9df50e0e514f1f2c\r\n$ make
\n
\n
\n
\n
port 22222 \u3067\u8d77\u52d5
\n
\n
$ ./endlessh -v -p22222 &\r\n[1] 22698\r\n2019-03-24T04:56:10.338Z Port 22222\r\n2019-03-24T04:56:10.338Z Delay 10000\r\n2019-03-24T04:56:10.338Z MaxLineLength 32\r\n2019-03-24T04:56:10.338Z MaxClients 4096
\n
\n
\n
\n
ssh \u63a5\u7d9a\u3057\u3066\u307f\u308b\u3068700\u5206\u307b\u3069\u6355\u307e\u3048\u3066\u3044\u305f
\n
\n
$ time ssh localhost -p 22222\r\n2019-03-24T04:56:19.510Z ACCEPT host=::1 port=59402 fd=4 n=1/4096\r\nssh_exchange_identification: No banner received\r\n\r\nreal    700m30.650s\r\nuser    0m0.040s\r\nsys     0m0.240s\r\n2019-03-24T16:37:00.162Z CLOSE host=::1 port=59402 fd=4 time=42040.652 bytes=73944
\n
\n
\n
\n
\u7d42\u4e86
\n
\n
$ kill %1\r\n[1]+  Done                    ./endlessh -v -p22222
\n
\n
\n
\n

\u6570\u56de\u8a66\u3057\u307e\u3057\u305f\u304c\uff0c\u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u306f700\u5206\u524d\u5f8c\u6355\u307e\u308a\u307e\u3057\u305f\uff0e\u5358\u306b\u3042\u308a\u3082\u306e\u306escript\u3092\u52d5\u304b\u3059\u30ec\u30d9\u30eb\u306e\u653b\u6483\u8005\u3067\u3042\u308c\u3070\u30c4\u30fc\u30eb\u304c\u5bfe\u5fdc\u3059\u308b\u307e\u3067\u306f\u59a8\u5bb3\u306b\u306a\u308a\u305d\u3046\u3067\u3059\uff0e

\n
\n
\n
\u74b0\u5883
\n
\n
$ git log |head -1\r\ncommit 548a7b1521b2912e7e133d0d9df50e0e514f1f2c\r\n$ dpkg-query -W openssh-client\r\nopenssh-client  1:7.9p1-9\r\n$ lsb_release -dr\r\nDescription:    Debian GNU/Linux buster/sid\r\nRelease:        unstable\r\n$ uname -m\r\nx86_64
\n
\n
\n

\n", "content_text": "ssh \u306f\u653b\u6483\u304c\u591a\u3044\u3067\u3059\uff0e\u516c\u958b\u9375\u8a8d\u8a3c\u306b\u3057\u3066\u304a\u304f\u3068\u5927\u5206\u4fb5\u5165\u306b\u5f37\u304f\u306a\u308a\u307e\u3059\u304c\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u306b\u76f4\u63a5\u7e4b\u304c\u3063\u3066\u3044\u308b\u30b5\u30fc\u30d0\u3067\u306f\u653b\u6483\u306f\u3068\u3066\u3082\u591a\u3044\u3067\u3059\uff0e\n\n\nEndlessh \u306fsshd \u306e\u4ee3\u308f\u308a\u306b\u8d77\u52d5\u3057\u3066\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831\u3092\u9001\u308b\u524d\u306e\u30c7\u30fc\u30bf\u306b\u307b\u307c\u30e9\u30f3\u30c0\u30e0\u306a\u6587\u5b57\u5217\u3092\u3086\u3063\u304f\u308a\u3068\u914d\u4fe1\u3057\u7d9a\u3051\u3066\u653b\u6483\u8005\u306e\u8db3\u6b62\u3081\u3092\u3059\u308b\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u3088\u3046\u3067\u3059\uff0e\n\u672c\u5f53\u306e sshd \u306f\u5225\u30dd\u30fc\u30c8\u3067\u8d77\u52d5\u3057\u3066\u305d\u3063\u3061\u3092\u4f7f\u3046\u611f\u3058\u3067\u3057\u3087\u3046\u304b\uff0e22\u756a\u3092\u7121\u304f\u3057\u3066 port knocking \u3084 sslh \u3092\u4f7f\u3046\u306a\u3069\u306e\u307b\u3046\u304c\u3044\u3044\u304b\u3082\u3067\u3059\u304c\u9762\u767d\u305d\u3046\u3067\u3059\uff0e\n\n\n\n\nEndlessh: an SSH Tarpit \u00ab null program\n\n\n\n\n\u3068\u3044\u3046\u3053\u3068\u3067\u624b\u5143\u3067\u5c11\u3057\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\u5c0e\u5165\u3068\u30d3\u30eb\u30c9\n\n$ git clone https://github.com/skeeto/endlessh\r\n$ cd endlessh\r\n$ git log |head -1\r\ncommit 548a7b1521b2912e7e133d0d9df50e0e514f1f2c\r\n$ make\n\n\n\nport 22222 \u3067\u8d77\u52d5\n\n$ ./endlessh -v -p22222 &\r\n[1] 22698\r\n2019-03-24T04:56:10.338Z Port 22222\r\n2019-03-24T04:56:10.338Z Delay 10000\r\n2019-03-24T04:56:10.338Z MaxLineLength 32\r\n2019-03-24T04:56:10.338Z MaxClients 4096\n\n\n\nssh \u63a5\u7d9a\u3057\u3066\u307f\u308b\u3068700\u5206\u307b\u3069\u6355\u307e\u3048\u3066\u3044\u305f\n\n$ time ssh localhost -p 22222\r\n2019-03-24T04:56:19.510Z ACCEPT host=::1 port=59402 fd=4 n=1/4096\r\nssh_exchange_identification: No banner received\r\n\r\nreal 700m30.650s\r\nuser 0m0.040s\r\nsys 0m0.240s\r\n2019-03-24T16:37:00.162Z CLOSE host=::1 port=59402 fd=4 time=42040.652 bytes=73944\n\n\n\n\u7d42\u4e86\n\n$ kill %1\r\n[1]+ Done ./endlessh -v -p22222\n\n\n\n\u6570\u56de\u8a66\u3057\u307e\u3057\u305f\u304c\uff0c\u6a19\u6e96\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u306f700\u5206\u524d\u5f8c\u6355\u307e\u308a\u307e\u3057\u305f\uff0e\u5358\u306b\u3042\u308a\u3082\u306e\u306escript\u3092\u52d5\u304b\u3059\u30ec\u30d9\u30eb\u306e\u653b\u6483\u8005\u3067\u3042\u308c\u3070\u30c4\u30fc\u30eb\u304c\u5bfe\u5fdc\u3059\u308b\u307e\u3067\u306f\u59a8\u5bb3\u306b\u306a\u308a\u305d\u3046\u3067\u3059\uff0e\n\n\n\u74b0\u5883\n\n$ git log |head -1\r\ncommit 548a7b1521b2912e7e133d0d9df50e0e514f1f2c\r\n$ dpkg-query -W openssh-client\r\nopenssh-client 1:7.9p1-9\r\n$ lsb_release -dr\r\nDescription: Debian GNU/Linux buster/sid\r\nRelease: unstable\r\n$ uname -m\r\nx86_64", "date_published": "2019-03-26T00:19:39+09:00", "date_modified": "2019-03-26T00:19:39+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "OpenSSH", "ssh", "sshd", "Debian", "Linux", "sid" ] }, { "id": "http://matoken.org/blog/?p=2143", "url": "https://matoken.org/blog/2018/09/27/prevents-erroneous-system-outages-in-ssh-environment-molly-guard/", "title": "ssh\u74b0\u5883\u3067\u306e\u8aa4\u3063\u305f\u30b7\u30b9\u30c6\u30e0\u505c\u6b62\u3092\u9632\u3050molly-guard", "content_html": "
\n
\n
\n

\u6700\u8fd1 shutdown \u306e man \u3092\u898b\u6bd4\u3079\u305f\u308a\u3057\u3066\u305f\u306e\u3067\u3059\u304c\uff0c\u305d\u306e\u3068\u304d\u306b systemd, sysvinit \u4ee5\u5916\u306b molly-guard \u3068\u3044\u3046\u898b\u77e5\u3089\u306c\u3082\u306e\u304c\uff0e

\n
\n
\n
\n
$ apt-file search /sbin/shutdown\r\nmolly-guard: /sbin/shutdown\r\nsystemd-sysv: /sbin/shutdown\r\nsysvinit-core: /sbin/shutdown
\n
\n
\n
\n

\u30d1\u30c3\u30b1\u30fc\u30b8\u60c5\u5831\u3092\u307f\u308b\u3068 shutdown \u30b3\u30de\u30f3\u30c9\u306a\u3069\u3092\u7f6e\u304d\u63db\u3048\u3066 ssh \u63a5\u7d9a\u6642\u306b\u306f\u78ba\u8a8d\u306e\u305f\u3081\u306b\u30db\u30b9\u30c8\u540d\u3092\u805e\u304f\u3088\u3046\u306b\u306a\u308b\u3088\u3046\u3067\u3059\uff0e
\n\u3053\u308c\u306b\u3088\u308a\u624b\u5143\u306ePC\u306e\u518d\u8d77\u52d5\u3092\u3057\u305f\u3064\u3082\u308a\u304c\u30ea\u30e2\u30fc\u30c8\u306e\u30b5\u30fc\u30d0\u3092\u518d\u8d77\u52d5\u3057\u3066\u3057\u307e\u3046\u306a\u3069\u3068\u3044\u3063\u305f\u3053\u3068\u304c\u9632\u3052\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff0e

\n
\n
\n
\n
$ apt show molly-guard\r\nPackage: molly-guard\r\nVersion: 0.6.4\r\nPriority: extra\r\nSection: admin\r\nMaintainer: Francois Marier <francois@debian.org>\r\nInstalled-Size: 57.3 kB\r\nDepends: procps\r\nEnhances: init, kexec-tools, mosh, openssh-server, pm-utils, systemd, sysvinit, upstart\r\nTag: implemented-in::shell, interface::commandline, network::server,\r\n protocol::ssh, role::program, scope::utility\r\nDownload-Size: 13.8 kB\r\nAPT-Manual-Installed: yes\r\nAPT-Sources: http://ftp.jp.debian.org/debian stretch/main amd64 Packages\r\nDescription: protects machines from accidental shutdowns/reboots\r\n The package installs a shell script that overrides the existing\r\n shutdown/reboot/halt/poweroff/coldreboot/pm-hibernate/pm-suspend* commands\r\n and first runs a set of scripts, which all have to exit successfully,\r\n before molly-guard invokes the real command.\r\n .\r\n One of the scripts checks for existing SSH sessions. If any of the four\r\n commands are called interactively over an SSH session, the shell script\r\n prompts you to enter the name of the host you wish to shut down. This should\r\n adequately prevent you from accidental shutdowns and reboots.\r\n .\r\n molly-guard diverts the real binaries to /lib/molly-guard/.  You can bypass\r\n molly-guard by running those binaries directly.
\n
\n
\n
\n

\u65e9\u901f\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo apt install molly-guard\r\n    :\r\npackage diverts others to: /lib/molly-guard/coldreboot\r\n/sbin/halt\r\npackage diverts others to: /lib/molly-guard/halt\r\n/sbin/pm-hibernate\r\n/sbin/pm-suspend\r\n/sbin/pm-suspend-hybrid\r\n/sbin/poweroff\r\npackage diverts others to: /lib/molly-guard/poweroff\r\n/sbin/reboot\r\npackage diverts others to: /lib/molly-guard/reboot\r\n/sbin/shutdown\r\npackage diverts others to: /lib/molly-guard/shutdown
\n
\n
\n
\n

\u3053\u306e\u3042\u305f\u308a\u306e\u30b3\u30de\u30f3\u30c9\u304c\u7f6e\u304d\u63db\u308f\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n
\n
$ ls -l /sbin | grep molly\r\nlrwxrwxrwx 1 root root        28 Aug 16  2016 coldreboot -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root        28 Aug 16  2016 halt -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root        28 Aug 16  2016 pm-hibernate -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root        28 Aug 16  2016 pm-suspend -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root        28 Aug 16  2016 pm-suspend-hybrid -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root        28 Aug 16  2016 poweroff -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root        28 Aug 16  2016 reboot -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root        28 Aug 16  2016 shutdown -> /lib/molly-guard/molly-guard
\n
\n
\n
\n

\u30b3\u30de\u30f3\u30c9\u985e\u306f /lib/molly-guard \u4ee5\u4e0b\u306b\u9000\u907f\u3055\u308c\u308b\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
sysvinit
\n
\n
$ ls -lA /lib/molly-guard\r\ntotal 48\r\n-rwxr-xr-x 1 root root 18952 Feb 13  2017 halt\r\n-rwxr-xr-x 1 root root  2767 Aug 16  2016 molly-guard\r\nlrwxrwxrwx 1 root root     4 Feb 13  2017 poweroff -> halt\r\nlrwxrwxrwx 1 root root     4 Feb 13  2017 reboot -> halt\r\n-rwxr-xr-x 1 root root 23368 Feb 13  2017 shutdown
\n
\n
\n
\n
systemd
\n
\n
$ ls -lA /lib/molly-guard\r\ntotal 4\r\nlrwxrwxrwx 1 root root   14 Jun 14 05:20 halt -> /bin/systemctl\r\n-rwxr-xr-x 1 root root 2767 Aug 16  2016 molly-guard\r\nlrwxrwxrwx 1 root root   14 Jun 14 05:20 poweroff -> /bin/systemctl\r\nlrwxrwxrwx 1 root root   14 Jun 14 05:20 reboot -> /bin/systemctl\r\nlrwxrwxrwx 1 root root   14 Jun 14 05:20 shutdown -> /bin/systemctl
\n
\n
\n
\n

ssh \u7d4c\u7531\u3067 shutdown(sysvinit) \u3092\u8a66\u307f\u308b\u3068\u3053\u306e\u3088\u3046\u306b hostname \u3092\u6c42\u3081\u3089\u308c\u307e\u3059\uff0e\u3053\u3053\u3067\u8aa4\u3063\u305f hostname \u3092\u66f8\u304f\u3068 shutdown \u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ sudo shutdown -f -P -h +10 \"kernel update (`uname -r`)\"\r\nW: molly-guard: SSH session detected!\r\nPlease type in hostname of the machine to shutdown: desktop\r\nGood thing I asked; I won't shutdown debian ...\r\nW: aborting shutdown due to 30-query-hostname exiting with code 1.
\n
\n
\n
\n

\u6b63\u3057\u3044 hostname \u3092\u6307\u5b9a\u3059\u308b\u3068 shutdown \u304c\u547c\u3070\u308c\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo shutdown -f -P -h +10 \"kernel update (`uname -r`)\"\r\nW: molly-guard: SSH session detected!\r\nPlease type in hostname of the machine to shutdown: debian\r\n\r\nBroadcast message from root@debian (pts/0) (Thu Sep 27 06:15:28 2018):\r\n\r\nkernel update (4.9.0-3-amd64)\r\nThe system is going DOWN for system halt in 10 minutes!\r\n^C\r\nShutdown cancelled.
\n
\n
\n
\n

ssh\u7d4c\u7531\u3067\u306a\u3044\u5834\u5408\u306f molly-guard \u306f\u3059\u3050\u306b shutdown \u3092\u547c\u3073\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo shutdown -f -P -h +10 'poweroff'\r\n^C\r\nShutdown cancelled.
\n
\n
\n
\n
\n

\u74b0\u5883

\n
\n
\n
\n
$ dpkg-query -W systemd-sysv molly-guard\r\nmolly-guard     0.6.4\r\nsystemd-sysv    232-25+deb9u4\r\n$ dpkg-query -W sysvinit-core\r\nsysvinit-core   2.88dsf-59.9\r\n$ cat /etc/os-release\r\nPRETTY_NAME=\"Debian GNU/Linux 9 (stretch)\"\r\nNAME=\"Debian GNU/Linux\"\r\nVERSION_ID=\"9\"\r\nVERSION=\"9 (stretch)\"\r\nID=debian\r\nHOME_URL=\"https://www.debian.org/\"\r\nSUPPORT_URL=\"https://www.debian.org/support\"\r\nBUG_REPORT_URL=\"https://bugs.debian.org/\"\r\n$ cat /etc/debian_version\r\n9.5\r\n$ uname -m\r\nx86_64
\n
\n
\n
\n
\n
\n", "content_text": "\u6700\u8fd1 shutdown \u306e man \u3092\u898b\u6bd4\u3079\u305f\u308a\u3057\u3066\u305f\u306e\u3067\u3059\u304c\uff0c\u305d\u306e\u3068\u304d\u306b systemd, sysvinit \u4ee5\u5916\u306b molly-guard \u3068\u3044\u3046\u898b\u77e5\u3089\u306c\u3082\u306e\u304c\uff0e\n\n\n\n$ apt-file search /sbin/shutdown\r\nmolly-guard: /sbin/shutdown\r\nsystemd-sysv: /sbin/shutdown\r\nsysvinit-core: /sbin/shutdown\n\n\n\n\u30d1\u30c3\u30b1\u30fc\u30b8\u60c5\u5831\u3092\u307f\u308b\u3068 shutdown \u30b3\u30de\u30f3\u30c9\u306a\u3069\u3092\u7f6e\u304d\u63db\u3048\u3066 ssh \u63a5\u7d9a\u6642\u306b\u306f\u78ba\u8a8d\u306e\u305f\u3081\u306b\u30db\u30b9\u30c8\u540d\u3092\u805e\u304f\u3088\u3046\u306b\u306a\u308b\u3088\u3046\u3067\u3059\uff0e\n\u3053\u308c\u306b\u3088\u308a\u624b\u5143\u306ePC\u306e\u518d\u8d77\u52d5\u3092\u3057\u305f\u3064\u3082\u308a\u304c\u30ea\u30e2\u30fc\u30c8\u306e\u30b5\u30fc\u30d0\u3092\u518d\u8d77\u52d5\u3057\u3066\u3057\u307e\u3046\u306a\u3069\u3068\u3044\u3063\u305f\u3053\u3068\u304c\u9632\u3052\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff0e\n\n\n\n$ apt show molly-guard\r\nPackage: molly-guard\r\nVersion: 0.6.4\r\nPriority: extra\r\nSection: admin\r\nMaintainer: Francois Marier <francois@debian.org>\r\nInstalled-Size: 57.3 kB\r\nDepends: procps\r\nEnhances: init, kexec-tools, mosh, openssh-server, pm-utils, systemd, sysvinit, upstart\r\nTag: implemented-in::shell, interface::commandline, network::server,\r\n protocol::ssh, role::program, scope::utility\r\nDownload-Size: 13.8 kB\r\nAPT-Manual-Installed: yes\r\nAPT-Sources: http://ftp.jp.debian.org/debian stretch/main amd64 Packages\r\nDescription: protects machines from accidental shutdowns/reboots\r\n The package installs a shell script that overrides the existing\r\n shutdown/reboot/halt/poweroff/coldreboot/pm-hibernate/pm-suspend* commands\r\n and first runs a set of scripts, which all have to exit successfully,\r\n before molly-guard invokes the real command.\r\n .\r\n One of the scripts checks for existing SSH sessions. If any of the four\r\n commands are called interactively over an SSH session, the shell script\r\n prompts you to enter the name of the host you wish to shut down. This should\r\n adequately prevent you from accidental shutdowns and reboots.\r\n .\r\n molly-guard diverts the real binaries to /lib/molly-guard/. You can bypass\r\n molly-guard by running those binaries directly.\n\n\n\n\u65e9\u901f\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e\n\n\n\n$ sudo apt install molly-guard\r\n :\r\npackage diverts others to: /lib/molly-guard/coldreboot\r\n/sbin/halt\r\npackage diverts others to: /lib/molly-guard/halt\r\n/sbin/pm-hibernate\r\n/sbin/pm-suspend\r\n/sbin/pm-suspend-hybrid\r\n/sbin/poweroff\r\npackage diverts others to: /lib/molly-guard/poweroff\r\n/sbin/reboot\r\npackage diverts others to: /lib/molly-guard/reboot\r\n/sbin/shutdown\r\npackage diverts others to: /lib/molly-guard/shutdown\n\n\n\n\u3053\u306e\u3042\u305f\u308a\u306e\u30b3\u30de\u30f3\u30c9\u304c\u7f6e\u304d\u63db\u308f\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\n$ ls -l /sbin | grep molly\r\nlrwxrwxrwx 1 root root 28 Aug 16 2016 coldreboot -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root 28 Aug 16 2016 halt -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root 28 Aug 16 2016 pm-hibernate -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root 28 Aug 16 2016 pm-suspend -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root 28 Aug 16 2016 pm-suspend-hybrid -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root 28 Aug 16 2016 poweroff -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root 28 Aug 16 2016 reboot -> /lib/molly-guard/molly-guard\r\nlrwxrwxrwx 1 root root 28 Aug 16 2016 shutdown -> /lib/molly-guard/molly-guard\n\n\n\n\u30b3\u30de\u30f3\u30c9\u985e\u306f /lib/molly-guard \u4ee5\u4e0b\u306b\u9000\u907f\u3055\u308c\u308b\u3088\u3046\u3067\u3059\uff0e\n\n\nsysvinit\n\n$ ls -lA /lib/molly-guard\r\ntotal 48\r\n-rwxr-xr-x 1 root root 18952 Feb 13 2017 halt\r\n-rwxr-xr-x 1 root root 2767 Aug 16 2016 molly-guard\r\nlrwxrwxrwx 1 root root 4 Feb 13 2017 poweroff -> halt\r\nlrwxrwxrwx 1 root root 4 Feb 13 2017 reboot -> halt\r\n-rwxr-xr-x 1 root root 23368 Feb 13 2017 shutdown\n\n\n\nsystemd\n\n$ ls -lA /lib/molly-guard\r\ntotal 4\r\nlrwxrwxrwx 1 root root 14 Jun 14 05:20 halt -> /bin/systemctl\r\n-rwxr-xr-x 1 root root 2767 Aug 16 2016 molly-guard\r\nlrwxrwxrwx 1 root root 14 Jun 14 05:20 poweroff -> /bin/systemctl\r\nlrwxrwxrwx 1 root root 14 Jun 14 05:20 reboot -> /bin/systemctl\r\nlrwxrwxrwx 1 root root 14 Jun 14 05:20 shutdown -> /bin/systemctl\n\n\n\nssh \u7d4c\u7531\u3067 shutdown(sysvinit) \u3092\u8a66\u307f\u308b\u3068\u3053\u306e\u3088\u3046\u306b hostname \u3092\u6c42\u3081\u3089\u308c\u307e\u3059\uff0e\u3053\u3053\u3067\u8aa4\u3063\u305f hostname \u3092\u66f8\u304f\u3068 shutdown \u304c\u30ad\u30e3\u30f3\u30bb\u30eb\u3055\u308c\u307e\u3057\u305f\uff0e\n\n\n\n$ sudo shutdown -f -P -h +10 \"kernel update (`uname -r`)\"\r\nW: molly-guard: SSH session detected!\r\nPlease type in hostname of the machine to shutdown: desktop\r\nGood thing I asked; I won't shutdown debian ...\r\nW: aborting shutdown due to 30-query-hostname exiting with code 1.\n\n\n\n\u6b63\u3057\u3044 hostname \u3092\u6307\u5b9a\u3059\u308b\u3068 shutdown \u304c\u547c\u3070\u308c\u307e\u3059\uff0e\n\n\n\n$ sudo shutdown -f -P -h +10 \"kernel update (`uname -r`)\"\r\nW: molly-guard: SSH session detected!\r\nPlease type in hostname of the machine to shutdown: debian\r\n\r\nBroadcast message from root@debian (pts/0) (Thu Sep 27 06:15:28 2018):\r\n\r\nkernel update (4.9.0-3-amd64)\r\nThe system is going DOWN for system halt in 10 minutes!\r\n^C\r\nShutdown cancelled.\n\n\n\nssh\u7d4c\u7531\u3067\u306a\u3044\u5834\u5408\u306f molly-guard \u306f\u3059\u3050\u306b shutdown \u3092\u547c\u3073\u307e\u3059\uff0e\n\n\n\n$ sudo shutdown -f -P -h +10 'poweroff'\r\n^C\r\nShutdown cancelled.\n\n\n\n\n\u74b0\u5883\n\n\n\n$ dpkg-query -W systemd-sysv molly-guard\r\nmolly-guard 0.6.4\r\nsystemd-sysv 232-25+deb9u4\r\n$ dpkg-query -W sysvinit-core\r\nsysvinit-core 2.88dsf-59.9\r\n$ cat /etc/os-release\r\nPRETTY_NAME=\"Debian GNU/Linux 9 (stretch)\"\r\nNAME=\"Debian GNU/Linux\"\r\nVERSION_ID=\"9\"\r\nVERSION=\"9 (stretch)\"\r\nID=debian\r\nHOME_URL=\"https://www.debian.org/\"\r\nSUPPORT_URL=\"https://www.debian.org/support\"\r\nBUG_REPORT_URL=\"https://bugs.debian.org/\"\r\n$ cat /etc/debian_version\r\n9.5\r\n$ uname -m\r\nx86_64", "date_published": "2018-09-27T06:34:31+09:00", "date_modified": "2018-09-27T06:35:30+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "molly-guard", "shutdown", "ssh", "Debian", "Linux", "stretch" ] }, { "id": "http://matoken.org/blog/?p=1917", "url": "https://matoken.org/blog/2018/05/31/windows10-ssh-keys/", "title": "Windows10\u6a19\u6e96\u306essh\u306e\u9375\u306f\u30ec\u30b8\u30b9\u30c8\u30ea\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\u3089\u3057\u3044", "content_html": "

[janog:14329] \u3088\u308a\uff0e

\n\n

Windows 10\u6a19\u6e96\u306essh-keygen\u3067\u9375\u3092\u4f5c\u308b\u3068\u6a19\u6e96\u3067 %HOMEPATH%/.ssh \u3067\u9375\u304c\u7ba1\u7406\u3055\u308c\u308b\u3088\u3046\u3060\u3051\u3069\u3053\u3053\u304b\u3089\u6d88\u3057\u305f\u9375\u304c\u518d\u8d77\u52d5\u5f8c\u3082\u4f7f\u3048\u3066\u3057\u307e\u3046\u3068\u3044\u3046\u8a71\u304b\u3089\u306f\u3058\u307e\u3063\u3066\u3044\u308b\uff0e

\n\n

HKCU\\Software\\OpenSSH\\Agent\\Keys \u4ee5\u4e0b\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\u3089\u3057\u3044\uff0e

\n

\u4ee5\u4e0b\u306escript\u3067\u30ec\u30b8\u30b9\u30c8\u30ea\u5185\u306e\u9375\u304c\u53d6\u308a\u51fa\u305b\u308b\u3088\u3046\uff0e

\n\n

\u4eca\u74b0\u5883\u304c\u306a\u3044\u3051\u3069\u306a\u3093\u304b\u5d4c\u308a\u305d\u3046\u3060\u3057\u4eca\u5ea6\u8a66\u3057\u3066\u307f\u3088\u3046\uff0e

\n", "content_text": "[janog:14329] \u3088\u308a\uff0e\n\nJanog Mailing List (Archive\u306f\u3042\u308b\u3051\u3069\u8981login)\n\nWindows 10\u6a19\u6e96\u306essh-keygen\u3067\u9375\u3092\u4f5c\u308b\u3068\u6a19\u6e96\u3067 %HOMEPATH%/.ssh \u3067\u9375\u304c\u7ba1\u7406\u3055\u308c\u308b\u3088\u3046\u3060\u3051\u3069\u3053\u3053\u304b\u3089\u6d88\u3057\u305f\u9375\u304c\u518d\u8d77\u52d5\u5f8c\u3082\u4f7f\u3048\u3066\u3057\u307e\u3046\u3068\u3044\u3046\u8a71\u304b\u3089\u306f\u3058\u307e\u3063\u3066\u3044\u308b\uff0e\n\nExtracting SSH Private Keys from Windows 10 ssh-agent\n\nHKCU\\Software\\OpenSSH\\Agent\\Keys \u4ee5\u4e0b\u306b\u4fdd\u5b58\u3055\u308c\u3066\u3044\u308b\u3089\u3057\u3044\uff0e\n\u4ee5\u4e0b\u306escript\u3067\u30ec\u30b8\u30b9\u30c8\u30ea\u5185\u306e\u9375\u304c\u53d6\u308a\u51fa\u305b\u308b\u3088\u3046\uff0e\n\nGitHub – ropnop/windows_sshagent_extract: PoC code to extract private keys from Windows 10's built in ssh-agent service\n\n\u4eca\u74b0\u5883\u304c\u306a\u3044\u3051\u3069\u306a\u3093\u304b\u5d4c\u308a\u305d\u3046\u3060\u3057\u4eca\u5ea6\u8a66\u3057\u3066\u307f\u3088\u3046\uff0e", "date_published": "2018-05-31T06:30:49+09:00", "date_modified": "2018-05-31T06:31:54+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "ssh", "Windows10", "\u672a\u5206\u985e" ] } ] }