исправление: переход на ключи ed25519 и добавление openssh-keygen в зависимости для обхода ошибки libcrypto
This commit is contained in:
parent
71eacbab89
commit
1365a12d86
|
|
@ -57,6 +57,7 @@ install_pkg() {
|
||||||
}
|
}
|
||||||
|
|
||||||
install_pkg "openssh-client"
|
install_pkg "openssh-client"
|
||||||
|
install_pkg "openssh-keygen"
|
||||||
install_pkg "autossh"
|
install_pkg "autossh"
|
||||||
install_pkg "curl"
|
install_pkg "curl"
|
||||||
|
|
||||||
|
|
|
||||||
27
rproxy
27
rproxy
|
|
@ -8,7 +8,7 @@ CONF_DIR="/opt/etc/rproxy"
|
||||||
CONF_FILE="$CONF_DIR/rproxy.conf"
|
CONF_FILE="$CONF_DIR/rproxy.conf"
|
||||||
SERVICES_DIR="$CONF_DIR/services"
|
SERVICES_DIR="$CONF_DIR/services"
|
||||||
PID_DIR="/opt/var/run/rproxy"
|
PID_DIR="/opt/var/run/rproxy"
|
||||||
SSH_KEY="$CONF_DIR/id_rsa"
|
SSH_KEY="$CONF_DIR/id_ed25519"
|
||||||
REMOTE_NGINX_DIR="/etc/nginx/sites-enabled"
|
REMOTE_NGINX_DIR="/etc/nginx/sites-enabled"
|
||||||
BASE_TUNNEL_PORT=10000
|
BASE_TUNNEL_PORT=10000
|
||||||
|
|
||||||
|
|
@ -700,30 +700,27 @@ do_setup() {
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ ! -f "$SSH_KEY" ]; then
|
if [ ! -f "$SSH_KEY" ]; then
|
||||||
msg "Генерирую SSH-ключ..."
|
msg "Генерирую SSH-ключ (ed25519)..."
|
||||||
mkdir -p "$CONF_DIR"
|
mkdir -p "$CONF_DIR"
|
||||||
|
|
||||||
# Предпочтительно используем полный путь к OpenSSH из Entware
|
# Удаляем старые RSA ключи, если они есть (избегаем путаницы)
|
||||||
|
rm -f "$CONF_DIR/id_rsa" "$CONF_DIR/id_rsa.pub"
|
||||||
|
|
||||||
local keygen_cmd="/opt/bin/ssh-keygen"
|
local keygen_cmd="/opt/bin/ssh-keygen"
|
||||||
[ ! -f "$keygen_cmd" ] && keygen_cmd="ssh-keygen"
|
[ ! -f "$keygen_cmd" ] && keygen_cmd="ssh-keygen"
|
||||||
|
|
||||||
# 1. Попытка создания OpenSSH ключа (современный формат)
|
# Создаем современный и компактный ed25519 ключ
|
||||||
if ! $keygen_cmd -t rsa -b 2048 -f "$SSH_KEY" -N "" -q 2>/dev/null; then
|
# Он лучше всего совместим между OpenSSH и Dropbear
|
||||||
# 2. Попытка для Dropbear (флаг -s вместо -b)
|
if ! $keygen_cmd -t ed25519 -f "$SSH_KEY" -N "" -q 2>/dev/null; then
|
||||||
if ! $keygen_cmd -t rsa -s 2048 -f "$SSH_KEY" -N "" 2>/dev/null; then
|
# Танцы с бубном для старых версий
|
||||||
# 3. Минимально возможный набор флагов
|
$keygen_cmd -t ed25519 -f "$SSH_KEY" -N ""
|
||||||
$keygen_cmd -t rsa -f "$SSH_KEY" -N ""
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Извлекаем публичный ключ, если он не создался (особенности Dropbear)
|
# Извлекаем публичный ключ, если он не создался
|
||||||
if [ ! -f "$SSH_KEY.pub" ] && [ -f "$SSH_KEY" ]; then
|
if [ ! -f "$SSH_KEY.pub" ] && [ -f "$SSH_KEY" ]; then
|
||||||
# Dropbear -y может выводить лишний текст, берем только строку начинающуюся с ssh-rsa
|
$keygen_cmd -y -f "$SSH_KEY" 2>/dev/null | grep "^ssh-ed25519" > "$SSH_KEY.pub"
|
||||||
$keygen_cmd -y -f "$SSH_KEY" 2>/dev/null | grep "^ssh-rsa" > "$SSH_KEY.pub"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверка формата: если ключ Dropbear, а клиент OpenSSH — может потребоваться конвертация
|
|
||||||
# Но обычно если мы в Entware, /opt/bin/ssh должен понимать PEM
|
|
||||||
if [ -f "$SSH_KEY" ]; then
|
if [ -f "$SSH_KEY" ]; then
|
||||||
chmod 600 "$SSH_KEY"
|
chmod 600 "$SSH_KEY"
|
||||||
msg "Ключ создан: $SSH_KEY"
|
msg "Ключ создан: $SSH_KEY"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue