使用SSH连接服务器及VSCode远程开发配置指南_vscode ssh
一、前置知识
1. SSH基础概念
2. 核心组件
- 服务端:需安装
openssh-server(一般系统已自带)- 安装示例:(Ubuntu安装命令:
sudo apt install openssh-server)。
- 安装示例:(Ubuntu安装命令:
- 客户端:需安装
openssh-client(一般系统已自带)。 - 密钥对:
- 公钥(
id_***.pub文件):相当于“锁”,可公开,用于加密和身份验证。 - 私钥(
id_***文件):相当于“钥匙”,需严格保密,权限建议设为600。
- 公钥(
二、SSH连接服务器实操
1. 基础连接
- 获取服务器信息:
- IP地址(如
123.123.123.123) - 登录账户(如
root或ubuntu)
- IP地址(如
- 执行连接命令:
ssh <账户名>@<IP地址># 示例:ssh root@123.123.123.123 - 输入密码:根据提示输入账户密码。
- 退出连接:按
Ctrl/Command + D或输入exit。
2. 为服务器设置别名
目的:用简短别名(如 myserver)替代复杂IP地址。
- 创建配置文件:
touch ~/.ssh/config # 若文件不存在则新建 - 编辑配置:
Host myserver # 自定义别名 HostName 123.123.123.123 # 服务器IP User root # 登录账户 - 使用别名连接:
ssh myserver
3. 配置免密登录
原理:客户端存私钥,服务端存公钥。
-
生成密钥对(客户端执行):
ssh-keygen [-t ed25519] # 按提示设置保存路径和密码(可选) # 方括号中的内容可选,不进行配置会有一个默认算法- 默认生成文件:
~/.ssh/id_ed25519(私钥)和id_ed25519.pub(公钥)。 - 权限检查:
chmod 600 ~/.ssh/id_ed25519 # 建议设置私钥权限!
- 默认生成文件:
-
上传公钥到服务器:
ssh-copy-id myserver # 或手动复制公钥内容到服务器的 ~/.ssh/authorized_keys- 服务器端权限设置:
chmod 700 ~/.sshchmod 600 ~/.ssh/authorized_keys
- 服务器端权限设置:
-
验证免密登录:
ssh myserver # 无需输入密码直接进入
三、VSCode远程开发配置
1. 安装必要插件
- 打开VSCode扩展商店(
Ctrl+Shift+X),搜索并安装:- Remote - SSH(核心插件)
- Remote - SSH: Editing Configuration Files(编辑配置文件插件)
- Remote Explorer(可视化管理连接)

2. 连接远程服务器
- 点击左侧边栏 Remote Explorer/远程资源管理器,选择配置的别名(如
myserver)。 - 点击 Connect,选择 New Window/在当前窗口中连接 或 Current Window/在新窗口中连接。

- 首次连接提示:
- 选择服务器系统类型(Linux/Windows/macOS)。
- 输入服务器账户密码(若未配置免密登录)。
3. 远程文件管理
- 打开远程目录:
- 按
Ctrl/Command+O或点击资源管理器中的 Open Folder/打开文件夹,选择服务器上的路径。
- 按

2. 打开文件后VSCode会在本地留下一个历史记录

- 编辑文件:
- 直接修改文件并保存,VSCode会自动同步到服务器。
- 终端操作:按
Ctrl+`打开集成终端,执行命令(如npm install)。
四、安全与故障排查
1. 安全建议
-
禁用密码登录:
在服务器端编辑/etc/ssh/sshd_config,设置:PasswordAuthentication no重启SSH服务:
sudo systemctl restart sshd。 -
私钥保护:
勿将私钥上传至GitHub等公开平台,避免使用默认名称id_rsa。
2. 常见问题
连接超时
- 检查IP和端口是否正确。
- 服务器防火墙是否放行22端口(命令:
sudo ufw allow 22)。
免密登录失败
- 检查客户端私钥权限是否为
600。 - 确认服务器端
authorized_keys文件权限为600。
VSCode无法识别别名
- 检查
~/.ssh/config文件语法(缩进需为2空格)。 - 重启VSCode或执行 Reload Window(命令面板输入
>Reload)。
五、附录:命令速查表
ssh-keygen -t ed25519ssh-copy-id myserversudo systemctl status sshchmod 600 ~/.ssh/id_ed25519

