Git SSH «отказано в разрешении» в macOS 13 Ventura
Когда я пытаюсь пройти аутентификацию с помощью ключа RSA SSH в macOS 13 (Ventura), я получаю
5 ответов
macOS 13 (Ventura) поставляется с OpenSSH_9.0p1. Согласно примечаниям к выпуску OpenSSH:
В этом выпуске по умолчанию отключены подписи RSA с использованием алгоритма хеширования SHA-1. Это изменение было внесено, поскольку алгоритм хеширования SHA-1 криптографически взломан, и можно создавать коллизии хэшей выбранного префикса за <50 тысяч долларов США [1]
Обходной путь описан в этой теме Reddit: SSH в Ventura.
Возможно, лучшим решением будет генерация ключей на основе более безопасного алгоритма хеширования. Пока я перехожу на ed25519, который можно сгенерировать так:
ssh-keygen -t ed25519 -C "comment"
Пожалуйста, не добавляйте это вHost *
! Это ужасная практика. Реальное решение — обновить удаленный сервер до версии выше OpenSSH 7.2. Если это не сработает, добавьте его для каждого IP-адреса хоста или в команде командной строки при подключении.
ИЕ -ssh -oPubkeyAcceptedAlgorithms=+ssh-rsa {user@host}
Вы можете проверить свои клиентские ключи и посмотреть, поддерживают ли они SHA256, и если да, то в данный момент новые ключи не нужны. Если там не написано SHA256, выбросьте эти ключи и получите что-нибудь понадежнее, используяssh-keygen
команда.
ssh-keygen -l -f .ssh/id_rsa
Добавьте следующее в свой~/.ssh/config
файл
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
KexAlgorithms +diffie-hellman-group1-sha1
Многие ответы просто слепо предлагают новые параметры конфигурации, которые не нужны.
Чтобы решить эту проблему, вы можете запустить следующую команду.
$ ssh-keygen -l -f ~/.ssh/id_rsa
3072 SHA256:/redacted /Users/myuser/.ssh/id_rsa.pub (RSA)
Затем вы можете взглянуть на поддерживаемые открытые ключи для вашей конфигурации ssh.
$ ssh -Q PubkeyAcceptedAlgorithms
ssh-ed25519
ssh-ed25519-cert-v01@openssh.com
ssh-rsa
rsa-sha2-256
rsa-sha2-512
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
ssh-rsa-cert-v01@openssh.com
rsa-sha2-256-cert-v01@openssh.com
rsa-sha2-512-cert-v01@openssh.com
ssh-dss-cert-v01@openssh.com
ecdsa-sha2-nistp256-cert-v01@openssh.com
ecdsa-sha2-nistp384-cert-v01@openssh.com
ecdsa-sha2-nistp521-cert-v01@openssh.com
В большинстве случаев добавление ssh-rsa будет работать, или вы также можете ограничить его до rsa-sha2-256, используя следующее. Остальные настройки, которые публикуют люди, практически в любом случае не нужны, только следующая строка.
Host *
PubkeyAcceptedAlgorithms +ssh-rsa
Однако в случае, если вы используете сертификаты ssh, вам нужно будет запустить следующую команду для вашего сертификата.
$ ssh-keygen -L -f ~/.ssh/id_rsa-cert.pub
/Users/myuser/.ssh/id_rsa-cert.pub:
Type: ssh-rsa-cert-v01@openssh.com user certificate
Public key: RSA-CERT SHA256:/redacted
Signing CA: RSA SHA256:redacted (using rsa-sha2-256)
Key ID: "something"
Serial: 123
Valid: from 2023-04-04T13:19:10 to 2023-04-05T09:19:40
В этом случае вам нужно будет добавить поле «Тип» в PubkeyAcceptedAlgorithms следующим образом.
Host *
PubkeyAcceptedAlgorithms +ssh-rsa-cert-v01@openssh.com
Для аутентификации PIV
Конечно, это отличается от проблемы ОП с ключами RSA.
После обновления до Ventura я получил следующую ошибку при использовании аутентификации ssh/PIV:
Infinite reexec detected; aborting
banner exchange: Connection to UNKNOWN port 65535: Broken pipe
Исправление было:
- Удалите или закомментируйте
PKCS11Provider
линия в твоем~/.ssh/config
- Выполните следующие команды:
ssh-add -e /usr/lib/ssh-keychain.dylib #Note - above command may produce the error: # 'Could not remove card "/usr/lib/ssh-keychain.dylib": agent refused operation' #This can be ignored; the file simply has no items to remove ssh-add -D killall -9 ssh-agent ssh-add -s /usr/lib/ssh-keychain.dylib
- Теперь вы сможете использовать SSH
Примечание . Если ssh по-прежнему не работает —
killall
должен был очистить все кэшированные процессы/ключи ssh/и т. д. Перезагрузка обязательно очистит все кэшированные данные, которые могут мешать.