/
bash_code
/
sshjet
Обзор
Документация
Войти
/
bash_code
/
sshjet
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
master
sshjet_rus
88 строк
3 KB
codesshaman
initial commit
08 апр 2026, 15:07
08 апр 2026, 15:07
02d4ba2
Код
Авторство
О чём код?
#!/bin/bash HOMEDIR=~ ANSIBLE=false SPACE=" " PORT="ansible_port=" HOST="ansible_host=" USER="ansible_user=" KEY="ansible_ssh_private_key_file=${HOME}/.ssh/" RSA="/id_rsa" STRING=" " LEFT="[" RIGHT="]" # Функция подтверждения confirm() { read -r -p "${1:-Вы уверены? [y/N]} " response case "$response" in [yY][eE][sS]|[yY]) true ;; *) false ;; esac } # Тело скрипта # Проверка существования ssh if [ ! -d "$HOMEDIR/.ssh" ]; then sudo apt install -y ssh fi # Проверка существования конфигурации if [ ! -f "$HOMEDIR/.ssh/config" ]; then touch "$HOMEDIR/.ssh/config" fi # Проверка существования ansible if [ -d "$HOMEDIR/.ansible/" ]; then ANSIBLE=true fi # Функция создания алиаса для быстрого доступа create_alias(){ if confirm "Создать алиас для быстрого доступа? (y/n or enter for no)"; then read -p "Введите алиас (CAPS!): " HOST_ALIAS echo "export $HOST_ALIAS='ssh $HOST_USER@$HOST_ADDR -p $HOST_PORT'" \ >> "$HOMEDIR/.bashrc" export $HOST_ALIAS="ssh $HOST_USER@$HOST_ADDR -p $HOST_PORT" fi } ######################## # Основной цикл скрипта# ######################## while : do if confirm "Добавить ещё одну конфигурацию? (y/n or enter for no)"; then STRING=$SPACE # Получаем данные от пользователя read -p "Введите имя для конфигурации: " HOST_NAME read -p "Введите имя пользователя ssh: " HOST_USER read -p "Введите <IPv4> адрес сервера: " HOST_ADDR read -p "Введите порт сервера для ssh: " HOST_PORT # Создаём директорию конфигурации mkdir "$HOMEDIR/.ssh/$HOST_NAME" # Генерируем связку ключей ssh ssh-keygen -t rsa -b 4096 -f \ $HOMEDIR/.ssh/$HOST_NAME/id_rsa # Экспортируем публичный ключ на сервер ssh-copy-id -i $HOMEDIR/.ssh/$HOST_NAME/id_rsa.pub \ -p $HOST_PORT $HOST_USER@$HOST_ADDR # Добавляем данные в файл конфигурации echo "Host $HOST_NAME" >> "$HOMEDIR/.ssh/config" echo " HostName $HOST_ADDR" >> "$HOMEDIR/.ssh/config" echo " User $HOST_USER" >> "$HOMEDIR/.ssh/config" echo " Port $HOST_PORT" >> "$HOMEDIR/.ssh/config" echo " IdentityFile ~/.ssh/$HOST_NAME/id_rsa" >> "$HOMEDIR/.ssh/config" echo " IdentitiesOnly=yes" >> "$HOMEDIR/.ssh/config" # Создаём алиас для быстрого доступа create_alias echo "Добавлен удалённый хост $HOST_ADDR!" cat "$HOMEDIR/.ssh/$HOST_NAME/id_rsa.pub" STRING=$HOST_NAME$SPACE$PORT$HOST_PORT$SPACE$HOST$HOST_ADDR$SPACE$USER$HOST_USER$SPACE$KEY$HOST_NAME$RSA if [ ANSIBLE=true ]; then echo "Проверка соединения с ansible" echo $LEFT$HOST_NAME$RIGHT >> ~/.ansible/hosts.txt echo $STRING >> ~/.ansible/hosts.txt ansible -i ~/.ansible/hosts.txt $HOST_NAME -m ping fi else break fi done