Как заставить ssh-copy-id игнорировать существующие авторизованные ключи?

Изменить: для этого есть отчет об ошибке , эквивалентный этому ответу .

Я пытаюсь выполнить сценарий копирования открытых ключей на несколько машин. ssh-copy-id проверяет, может ли он входить в систему с текущей конфигурацией перед копированием, но, к сожалению, это включает в себя любые записи IdentityFile в ~/.ssh/config . Я хотел бы полностью игнорировать ~/.ssh/config ; есть ли способ сделать это или заставить ssh-copy-id всегда добавлять ключ? Это не работает:

 ssh-add "$old_key" ssh-copy-id -i "$new_key" -o "IdentityFile $new_key" "$login" 

Это похоже на, но отличается от того, как я могу сделать ssh игнорировать .ssh / config? ,

После проверки кода ssh-copy-id получается, что этот хак работает:

 SSH_OPTS='-F /dev/null' ssh-copy-id [...] 

По-прежнему будет интересоваться решением, которое зависит только от документированных функций.

Использование SSH_OPTS не может быть SSH_OPTS будущем (я думаю, что сценарий должен SSH_OPTS перезагрузить его по соображениям безопасности: поведение не должно зависеть от неопределенных переменных среды, которые в некоторых случаях, возможно, не были очищены). Что вы могли бы сделать (возможно, через функцию оболочки):

 env PATH="/path/to/special_dir:$PATH" ssh-copy-id [...] 

где /path/to/special_dir просто содержит скрипт ssh , который может выполнять реальный ssh с -F /dev/null . Это немного уродливо, но я не думаю, что есть чистый способ с текущим сценарием ssh-copy-id .