Windows + VS Code → SSH по ключу: Быстро и По-DevOps
Лови рабочий чеклист: подключаем VS Code к удалённому серверу по SSH по ключу. Без воды, только практичные команды. ?
1. Генерация ключа (PowerShell)
Рекомендую ed25519 — безопасно и легко:
ssh-keygen -t ed25519 -C "This email address is being protected from spambots. You need JavaScript enabled to view it."
# сохранится в %USERPROFILE%\.ssh\id_ed25519
# можешь указать пароль (passphrase) или оставить пустым
Если хочешь RSA:
ssh-keygen -t rsa -b 4096 -C "This email address is being protected from spambots. You need JavaScript enabled to view it."
2. Установка публичного ключа на сервер
Вариант A — прямо из Windows:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
Вариант B — через ssh-copy-id (WSL / Linux):
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
Или вручную скопировать .pub в ~/.ssh/authorized_keys.
Права на сервере:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
3. Запуск ssh-agent и добавление ключа (локально)
Чтобы не вводить passphrase каждый раз:
PowerShell (как сервис):
Get-Service ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519
Git Bash / WSL:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
4. Настройка SSH-конфига (рекомендуется)
Файл %USERPROFILE%\.ssh\config:
Host myserver
HostName 1.2.3.4
User ubuntu
Port 22
IdentityFile C:\Users\Владыка\.ssh\id_ed25519
IdentitiesOnly yes
Теперь подключение — просто ssh myserver.
5. Подключение из VS Code
- Установи расширение Remote - SSH.
- F1 → Remote-SSH: Add New SSH Host..., вводим:
ssh myserver
или прямо:
ssh ubuntu@1.2.3.4 -i "C:\Users\Владыка\.ssh\id_ed25519"
- Выбираем сохранить в
%USERPROFILE%\.ssh\config. - F1 → Remote-SSH: Connect to Host... → выбираем
myserver. - VS Code установит серверный компонент и откроется новое окно.
Если используешь Pageant / PuTTY:
- Укажи путь до
plink.exeв настройках:
"remote.SSH.path": "C:\\Program Files\\PuTTY\\plink.exe"
- Ключи управляются Pageant/puttygen.
6. Частые проблемы и решения
- Права на сервере:
~/.ssh— 700,authorized_keys— 600. - VS Code ругается на агент: убедись, что
ssh-agentзапущен и ключ добавлен (ssh-add -l). - Не тот ключ: добавь
IdentitiesOnly yesв конфиг или явно укажи-i. - Порт нестандартный: в конфиге
Port 2222илиssh user@host -p 2222. - VS Code долго "Installing server": временно отключи антивирус/фаервол или проверь доступ по SSH из PowerShell.
- Пути Windows: полный путь в
IdentityFile, обрати внимание на кавычки при пробелах.
7. Пример рабочего сценария
Генерация ключа:
ssh-keygen -t ed25519 -C "This email address is being protected from spambots. You need JavaScript enabled to view it."
Копия ключа на сервер:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh ubuntu@1.2.3.4 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"
Добавление в агент:
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519
Подключение из VS Code:
Remote-SSH: Connect to Host...
ssh ubuntu@1.2.3.4 -i "C:\Users\You\.ssh\id_ed25519"
Готово. Быстро, чисто и по-человечески.