Хобрук: Ваш путь к мастерству в программировании

Что именно делает ssh-copy-id?

Что именно делает команда ssh-copy-id? Я использовал его много раз, и он отлично работает. Однако, когда я пытаюсь вручную вырезать и вставить ключевой файл .pub в мой удаленный author_keys, это не работает.

Я сравнил содержимое моего файла author_keys, в котором я вырезал и вставил .pub, с последующим использованием ssh-copy-id, и я не вижу никаких различий между ними, включая пробелы.

Есть ли что-нибудь, что ssh-copy-id делает, кроме копирования открытого ключа в author_keys?

27.03.2014

  • Вы проверили, правильно ли настроены разрешения для authorized_keys? 28.03.2014
  • Да, права доступа к каталогу и author_keys были правильными. ssh-copy-id вставлен в тот же файл, что и моя копия и вставка, поэтому файловая среда идентична. Мне больше всего любопытно, есть ли какие-либо другие действия, которые ssh-copy-id выполняет для «активации» ключа на удаленном сервере. Если нет, мне нужно выяснить, как мое копирование и вставка изменяет открытый ключ. 28.03.2014
  • Возможно, попробовать diff между вашей версией и автоматизированной версией? Страница руководства для ssh-copy-id не говорит, что она делает что-то еще. Кроме того, ssh-copy-id — это обычный сценарий оболочки, так что вы можете проверить, что он делает. 28.03.2014

Ответы:


1

Эта маленькая команда действительно должна работать. Я использую его каждый раз, когда нет ssh-copy-id, например, когда я на Mac.

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'

IMO Это лучше, чем ручное копирование и вставка: в этом случае вы точно знаете, какой контент окажется в файле.

02.12.2014

2

Обычно я копирую и вставляю ключи в author_keys, как вы описываете (про ssh-copy-id забываю), чтобы все работало. Обратите внимание, что chmod 600 ~/.ssh/authorized_keys требуется, если вы создаете файл.

ssh-copy-id — это сценарий оболочки, поэтому вы можете открыть его в текстовом редакторе, чтобы увидеть, что он делает, это выглядит как соответствующий бит:

printf '%s\n' "$NEW_IDS" | ssh "$@" "
    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 по умолчанию. Мне не приходилось запускать это, но это может быть необходимо в вашем случае.

07.03.2015
  • К вашему сведению, я создал небольшой скрипт на github.com/centic9/generate-and- send-ssh-key, который выполняет необходимые шаги за один раз и дополнительно обеспечивает все права доступа к файлам/каталогам, что обычно всегда вызывало у меня головную боль... 07.10.2015
  • @JacksonPauls, можете ли вы указать источник этого утверждения, о котором вы сказали: chmod 600 ~/.ssh/authorized_keys требуется, если вы создаете файл? Я искал в сценарии и не видел такого кода. Я также столкнулся с противоречивыми результатами во время тестирования. 18.03.2020
  • Новые материалы

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

    Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
    Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

    Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
    Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

    стройный-i18следующий
    Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

    Обзор 20 основных и современных методов работы с массивами в JavaScript
    Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

    Да, но я чувствую необходимость указать, что это или не единственные два.
    Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.