feat(bootstrap): добавить скрипт для установки пакетов и настройки окружения

feat(ssh): обновить конфигурацию SSH с новыми параметрами и удалить устаревшие записи
This commit is contained in:
Dmitry
2026-02-18 14:51:24 +03:00
parent a1a0c6ff63
commit 8414b662da
5 changed files with 94 additions and 49 deletions
+1
View File
@@ -7,6 +7,7 @@
```bash
git clone <repository-url> ~/.dotfiles
cd ~/.dotfiles
mkdir -p ~/.ssh/sockets
stow -t ~ */
```
+73
View File
@@ -0,0 +1,73 @@
#!/usr/bin/env bash
set -euo pipefail
PACKAGES=("zsh" "tmux" "alacritty" "stow")
# Detect package manager and install.
detect_and_install() {
if command -v apt &>/dev/null; then
echo "Detected: apt (Debian/Ubuntu)"
sudo apt update
sudo apt install -y "${PACKAGES[@]}"
elif command -v pacman &>/dev/null; then
echo "Detected: pacman (Arch)"
sudo pacman -Syu --noconfirm "${PACKAGES[@]}"
elif command -v dnf &>/dev/null; then
echo "Detected: dnf (Fedora/RHEL)"
sudo dnf install -y "${PACKAGES[@]}"
elif command -v zypper &>/dev/null; then
echo "Detected: zypper (openSUSE)"
sudo zypper install -y "${PACKAGES[@]}"
elif command -v brew &>/dev/null; then
echo "Detected: brew (macOS)"
brew install "${PACKAGES[@]}"
else
echo "Error: No supported package manager found"
echo "Please install: ${PACKAGES[*]}"
exit 1
fi
}
# Check if all packages are already installed.
check_installed() {
local missing=()
for pkg in "${PACKAGES[@]}"; do
if ! command -v "$pkg" &>/dev/null; then
missing+=("$pkg")
fi
done
if [[ ${#missing[@]} -gt 0 ]]; then
echo "Missing packages: ${missing[*]}"
detect_and_install
else
echo "All required packages already installed."
fi
}
check_installed
# Basic setup for this dotfiles repo.
mkdir -p "$HOME/.ssh/sockets"
echo "Created ~/.ssh/sockets"
# Apply all stow packages.
cd "$(dirname "$0")"
echo "Running: stow -t $HOME */"
stow -t "$HOME" */
# Set zsh as default shell.
set_default_shell() {
local zsh_path
zsh_path=$(command -v zsh)
read -p "Set zsh as default shell? (y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
chsh -s "$zsh_path"
echo "Default shell changed to: $zsh_path"
fi
}
set_default_shell
echo "Bootstrap complete!"
+19 -3
View File
@@ -2,9 +2,25 @@
Host *
# Переиспользование соединений (быстрее)
# ControlMaster auto
# ControlPath ~/.ssh/sockets/%r@%h:%p
# ControlPersist 10m
ControlMaster auto
ControlPath ~/.ssh/sockets/%C
ControlPersist 10m
# Автоматически добавлять ключи в агент
AddKeysToAgent yes
# Использовать только явно заданные ключи
IdentitiesOnly yes
# Таймауты подключения
ConnectTimeout 10
ConnectionAttempts 2
# Обновлять ключи хоста при ротации
UpdateHostKeys yes
# Хэшировать known_hosts
HashKnownHosts yes
# Держать соединение живым
ServerAliveInterval 60
-3
View File
@@ -1,6 +1,3 @@
# 10 - Local network (direct IP)
# ПК
Host ada-pc
HostName 192.168.1.100
User ada
+1 -43
View File
@@ -1,48 +1,6 @@
# 40 - Corporate (PAO IL)
Host ada-alt
HostName 127.0.0.1
User ada-alt
Port 3322
IdentityFile ~/.ssh/id_ed25519
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
Host pam
HostName 10.1.194.230
User antipenkoda@MSK.LAN
Port 2244
ProxyJump ada-alt
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
Host master-ans
HostName 10.1.194.160
User ada
IdentityFile /home/ada/.ssh/id_ed25519_ada
ProxyJump pam
LocalForward 9000 localhost:22
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
Host master-ans-direct
HostName localhost
Port 9000
User ada
SetEnv TERM=xterm-256color
Host gitea
HostName 10.1.194.243
User gitea
IdentityFile ~/.ssh/id_ed25519_ada
ProxyJump pam
Host devel.mephi.ru
HostName devel.mephi.ru
IdentityFile ~/.ssh/id_ed25519_ada
IdentityFile ~/.ssh/id_ed25519
KexAlgorithms +curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
Host github.com