課題
AWS CodeCommitにRepositoryを立てて、サクッとSourceを共有しようとしたら、予想外にハマった件。
接続元は、Fedora34 Workstation.
[root@ip-***-***-***-*** ~]# ssh -T A******************D@git-codecommit.us-east-1.amazonaws.com
sign_and_send_pubkey: no mutual signature supported
A******************D@git-codecommit.us-east-1.amazonaws.com: Permission denied (publickey).
原因
詳細はよく分からないが、最近のOpenSSHは古い暗号化形式を拒否するらしい。
これ、昔から使ってるSSH Private Keyを使って最新のAmazon LinuxのEC2に接続しようとするときにもたまに起こる。
対応方法
/etc/ssh/ssh_config
に以下を追記する。
Include /etc/ssh/ssh_config.d/*.conf
PubkeyAcceptedKeyTypes +ssh-dss # <= 追記
~/.ssh/config
に個別に記述する方法もあるけど、意外とハマりがちなので特別な理由がないなら ssh_config
に記述した方がSmartっぽい。
結果
SSH接続できるようになる。
# ssh -T A******************D@git-codecommit.us-east-1.amazonaws.com
You have successfully authenticated over SSH. You can use Git to interact with AWS CodeCommit. Interactive shells are not supported.Connection to git-codecommit.us-east-1.amazonaws.com closed by remote host.
もちろん、Git clone
も上手く行く。
# git clone ssh://A******************D@git-codecommit.us-east-1.amazonaws.com/v1/repos/***
Cloning into '***'...
warning: You appear to have cloned an empty repository.
その他
CodeCommitを利用するIAM UserにはMFAを有効にしない方が良いっぽい。
どうしても有効にする必要がある場合には、こことかここを参考にすると良さそう。