Forgejo+αな感じのGitHub代替なCodebergにSSH公開鍵を登録してssh公開鍵認証でGitが使えるようにしてみました.
公式の手順はこちらにあります.少し気になったのが鍵生成のオプションでroundsが100もあること.手元のOpenSSH 10.0p2のssh-keygenのmanで確認すると既定値は16になっているので大分捻っています.
鍵ペアを生成したら*.pubの拡張子の付いた公開鍵*を以下のページから登録.
~/.ssh/configにCodebergの設定を書いておきます.Codebergはport 443でもssh接続okなのでここでは443を使うようにしています.
Userがみんなgitですが,鍵によりユーザを区別するようです.
$ grep -A 4 Host\ codeberg.org ~/.ssh/config Host codeberg.org HostName codeberg.org User git IdentityFile ~/.ssh/id_ed25519 Port 443
接続テストをします.
初回接続時にはホスト鍵の確認が必要です.Codebergのホスト鍵の鍵指紋は以下で確認できます.確認して入力しましょう.
$ ssh -T git@codeberg.org The authenticity of host 'codeberg.org (2a0a:4580:103f:c0de::1)' can't be established. ED25519 key fingerprint is SHA256:mIlxA9k46MmM6qdJOdMnAQpzGxF4WIVVL+fj+wZbw0g. +--[ED25519 256]--+ | ++*+=. | |o +.+... | |oBo...+ o | |+o*o + OE | |o ... +.So | |. o . .o.+ | |.= o . .+ . | |..+.o ... | | oo .o. | +----[SHA256]-----+ This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? SHA256:mIlxA9k46MmM6qdJOdMnAQpzGxF4WIVVL+fj+wZbw0g Warning: Permanently added 'codeberg.org' (ED25519) to the list of known hosts. Connection closed by 2a0a:4580:103f:c0de::1 port 22
接続がうまく行けば自分のアカウント名や,鍵のコメントが表示されます.
$ ssh -T git@codeberg.org Host key fingerprint is SHA256:mIlxA9k46MmM6qdJOdMnAQpzGxF4WIVVL+fj+wZbw0g +--[ED25519 256]--+ | ++*+=. | |o +.+... | |oBo...+ o | |+o*o + OE | |o ... +.So | |. o . .o.+ | |.= o . .+ . | |..+.o ... | | oo .o. | +----[SHA256]-----+ Enter passphrase for key '/home/matoken/.ssh/id_ed25519': Authenticated to codeberg.org ([2a0a:4580:103f:c0de::1]:22) using "publickey". Hi there, matoken! You've successfully authenticated with the key named matoken@l13, but Forgejo does not provide shell access. If this is unexpected, please log in with password and setup Forgejo under another user.
ここではmatoken@l13という鍵を使い,matokenというアカウントでログインに成功しています.
Note | Codebergはport 443でもssh接続okなのですが,ここのテストは443を使うと失敗するようです. |
この状態でパスワード認証を試みると失敗します.
$ ssh -T matoken@codeberg.org -o PasswordAuthentication=yes Host key fingerprint is SHA256:mIlxA9k46MmM6qdJOdMnAQpzGxF4WIVVL+fj+wZbw0g +--[ED25519 256]--+ | ++*+=. | |o +.+... | |oBo...+ o | |+o*o + OE | |o ... +.So | |. o . .o.+ | |.= o . .+ . | |..+.o ... | | oo .o. | +----[SHA256]-----+ matoken@codeberg.org: Permission denied (publickey).
TOTPの設定を有効にしてこのSSH公開鍵認証を使うようにするとそこそこ安心な感じです.