Этот сервер позволяет веб-приложению работать с удалёнными серверами по SSH через простой REST API. Браузер не может напрямую устанавливать SSH-соединения — прокси решает эту проблему.
- Node.js версии 18 или выше
Создайте папку ssh-proxy, внутри неё создайте файл server.js и вставьте в него код сервера.
В той же папке создайте файл package.json:
{
"name": "ssh-proxy",
"version": "1.0.0",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"cors": "^2.8.5",
"dotenv": "^16.0.0",
"express": "^4.18.0",
"ssh2": "^1.15.0"
}
}npm installnode server.jsИли через npm:
npm startnode server.jsИли через npm:
npm startПосле запуска в терминале появится:
Stateless SSH REST API running on port 3016
Сервер будет доступен по адресу: http://localhost:3016
По умолчанию используется порт 3016. Чтобы изменить его, создайте файл .env рядом с server.js:
PORT=8080
npm install -g pm2
pm2 start server.js --name ssh-proxy
pm2 save
pm2 startupnpm install -g pm2
pm2 start server.js --name ssh-proxy
pm2 saveИли можно добавить в Планировщик задач Windows, указав команду node C:\путь\до\server.js.
После запуска укажите адрес прокси в настройках приложения:
http://localhost:3016
Важно: сервер принимает подключения только от браузера на том же компьютере. Если хотите открыть доступ по сети — убедитесь, что порт открыт в файрволе, и используйте HTTPS (например, через nginx + Let's Encrypt).
- Сервер не хранит SSH-credentials — они передаются с каждым запросом и используются только для текущего соединения.
- Не публикуйте сервер в интернет без дополнительной защиты (токен доступа, HTTPS, firewall).
- Некоторые опасные команды (
rm -rf /,mkfs,dd if=...of=/dev/...) заблокированы на уровне сервера.