Что, собственно, делает ssh-copy-id?
Что делает команда ssh-copy-id, точно? Я использовал его много раз, и он отлично работает. Однако, когда я пытаюсь вручную вырезать и вставлять мой .pub keyfile в мои удаленные authorized_keys, он не работает.
Я сравнил содержимое файла authorized_keys, где я вырезал и вставлял в него .pub, а затем использовал ssh-copy-id, и я не вижу различий между ними, включая пробелы.
Есть ли что-нибудь, что ssh-copy-id делает помимо копирования открытого ключа в authorized_keys?
Ответы
Ответ 1
Этот маленький script действительно должен работать. Я использую его каждый раз, когда нет ssh-copy-id, например, когда я нахожусь на Mac.
cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
IMO Это лучше, чем ручная копия и вставка: в этом случае вы точно знаете, какой контент окажется в файле
Ответ 2
Обычно я копирую-вставляю ключи в authorized_keys, как вы описываете (я забыл о ssh-copy-id
), поэтому он может работать. Обратите внимание, что chmod 600 ~/.ssh/authorized_keys
требуется, если вы создаете файл.
ssh-copy-id
- это оболочка script, поэтому вы можете открыть ее в текстовом редакторе, чтобы увидеть, что она делает, это похоже на соответствующий бит:
printf '%s\n' "$NEW_IDS" | ssh "[email protected]" "
umask 077 ;
mkdir -p .ssh && cat >> .ssh/authorized_keys || exit 1 ;
if type restorecon >/dev/null 2>&1 ; then restorecon -F .ssh .ssh/authorized_keys ; fi"
restorecon в последней строке восстанавливает контексты безопасности SELinux по умолчанию. Мне не нужно было запускать это, но это может быть необходимо в вашем случае.