Обратите внимание, что
touch ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
echo '... me@machine' >> ~/.ssh/authorized_keys
не предлагает пользы по поводу:
echo '... me@machine' >> ~/.ssh/authorized_keys
chmod go-rwx ~/.ssh/authorized_keys
разрешения проверяются на открытии файл, не при чтении или записи к нему.
Так что не имеет значения, делаете ли вы CHMOD
до или после добавления контента. Кто-то все еще может открыть файл, прежде чем делать CHMOD
, но подождите, пока вы добавите контент, прежде чем прочитать его.
Здесь вы хотите убедиться, что файл имеет правильные разрешения с начала:
sudo -u user sh -c '
umask 077 && printf "%s\n" "$1" >> ~/.ssh/authorized_keys
' sh "$key user@host"
Вы можете посмотреть SSH-COPY-ID
Ссылку: 3 шага для выполнения входа в систему SSH без пароля с использованием SSH-Keygen & SSH-Copy-ID
Для вашего конкретного примера это лучшее, что я смог сделать.
ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa -y > ~/.ssh/authorized_keys && chmod 0600 ~/.ssh/authorized_keys
Важной опцией был флаг -y
для ssh-keygen
, который позволяет печатать открытый ключ в stdout, что позволяет избежать двух шагов создания и чтения файла.
Для создания, установки разрешений и записи из существующего файла можно использовать команду install
install -m 0600 ~/.ssh/id_rsa ~/.ssh/authorized_keys
Недостатком команды install
является то, что она не работает с перенаправлением из stdout, что означает, что вам придется копировать содержимое всего файла.