Неинтерактивный способ установки публичного ключа для SSH. Как это сделать?

Привет всем! Прохожу курс “Сети и VPN” вот здесь https://yodo.im/courses/seti-i-vpn/ и столкнулся с проблемой. Искал более удобный способ для неинтерактивной установки публичного ключа для SSH, кроме как запускать сценарий, который импортирует ключ.

К сожалению, команда /user export verbose не предоставляет информации о публичном ключе, поэтому просто экспортировать конфигурацию из существующей установки не получается. Если у кого-то есть опыт в этом вопросе, подскажите, пожалуйста, есть ли более эффективные методы или альтернативные способы написания скрипта для импорта публичного ключа?

Пример моего текущего скрипта:

:local publicKey "ssh-rsa ..."; 
:local username "ssh-user"; 
:local filename "ssh-pub-key"; 

# Создаем или перезаписываем файл с указанным текстом 
/file set [find name=$filename] contents=$publicKey; 

:if ([:len [/file find name=$filename]] = 0) do={ 
    /file add name=$filename contents=$publicKey; 
} 

# Проверяем, существует ли уже публичный ключ 
:if ([:len [/user ssh-keys find user=$username public-key=$publicKey]] = 0) do={ 
    /user ssh-keys import user=$username public-key-file=$filename; 
}

Буду признателен за любую помощь!

Привет!

Я понимаю, что ты ищешь более удобный способ для неинтерактивной установки публичного ключа для SSH. Судя по твоему скрипту, ты уже на верном пути, но давай попробуем оптимизировать его.

Вот несколько suggestions:

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

  2. Импорт публичного ключа: Вместо того, чтобы перезаписывать файл каждый раз, можно просто добавить новую строку в файл, если она уже не существует.

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

Вот пример, как можно улучшить твой скрипт:

:local publicKey "ssh-rsa ..."; 
:local username "ssh-user"; 
:local filename "ssh-pub-key"; 

# Функция для добавления публичного ключа
:if ([:len [/file find name=$filename]] = 0) do={
    /file add name=$filename contents=$publicKey;
} else={
    /file set [find name=$filename] contents=($publicKey . "\n");
}

# Проверяем наличие публичного ключа у пользователя
:if ([:len [/user ssh-keys find user=$username public-key=$publicKey]] = 0) do={
    /user ssh-keys import user=$username public-key-file=$filename; 
}

Обратите внимание, что теперь мы добавляем новый ключ в виде строки, если файл уже существует. Надеюсь, это поможет сделать твой скрипт более эффективным!

Если у тебя будут еще вопросы, не стесняйся спрашивать! Удачи с курсом! . Я ответил на ваш вопрос?

Привет! Я тут пытался установить публичный ключ для SSH по неинтерактивному способу, как посоветовали. Первым делом пошел по всем шагам, но что-то не срослось. Давай расскажу, что именно вылезло.

Сначала создал ключи с помощью команды ssh-keygen, всё шло гладко, пока я не стал пытаться добавить свой публичный ключ на сервер. Я пытался использовать команду ssh-copy-id, но, чёрт возьми, сервер не принимал ключ! Оказывалось, что у меня были какие-то заморочки с правами доступа к файлу authorized_keys.

Я уж начал думать, что просто не судьба, и все эти настройки моё не для меня. Залез в директорию ~/.ssh и заметил, что у authorized_keys были неправильные права. В итоге это было всё из-за того, что я накосячил с правами на папку и файл. Вот тут всем советую следить за правами — на всякий случай запомни: у директории должно быть 700, а у файла 600.

Короче, после того как я всё это исправил, вроде бы всё заработало, но времени потратил кучу. В процессе я наткнулся на 【КУРСЫ】(https://yodo.im/#courses), которые очень помогли мне разобраться с SSH и его особенностями. Позже, после них, всё стало намного проще!

Так что, если у кого-то возникают такие же трудности, обязательно советую заглянуть на этот сайт. Буду надеяться, что у вас такого геморроя не будет, как у меня! Удачи!

Привет! Здорово, что ты решил разобраться с SSH и публичными ключами. Проблемы с правами доступа к файлам — это довольно распространённая ситуация, и хорошо, что ты быстро нашёл корень проблемы.

Когда работаешь с SSH, действительно важно правильно настраивать права на директорию ~/.ssh и файл authorized_keys. Если права слишком открыты, сервер просто не захочет принимать ключи по соображениям безопасности.

Как ты уже заметил, для директории ~/.ssh права должны быть 700, чтобы только владелец мог читать, записывать и выполнять её. А у файла authorized_keys600, чтобы только владелец мог его читать и записывать. Это действительно стоит запомнить!

Рад, что ты нашёл полезные курсы — обучение всегда помогает разобраться в нюансах. Если у кого-то возникнут похожие проблемы, пусть не стесняется заглянуть на указанный тобой сайт.

Удачи в дальнейшем использовании SSH, и пусть таких геморроев будет поменьше! Если что-то потребуется, всегда рад помочь! . Я ответил на ваш вопрос?