vscode通过ssh连接ubuntu系统

本文介绍了如何将Ubuntu虚拟机设置为桥接模式,通过安装openssh-server建立SSH服务,生成并配置SSH密钥对,以便在Windows上的VSCode中使用Remote-SSH插件进行远程开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

折腾了好久,终于能够远程连上了,开心的记录一下哈哈( •̀ ω •́ )✧

1.Ubuntu端

  1. 先把虚拟机网络适配器改为桥接模式。
    在这里插入图片描述
  2. 通过ifconfig命令查看虚拟机的IP地址,如果没有该命令则先安装net-tools,记录当前的IP地址。
root@RobotMan:/opt/Workspace/Toolkits# sudo apt install net-tools
root@RobotMan:/opt/Workspace/Toolkits# ifconfig

在这里插入图片描述
3. 安装openssh-server

root@RobotMan:/opt/Workspace/Toolkits# apt install openssh-server
  1. 进入当前用户的.ssh目录下,没有则创建该目录,进入该目录后执行ssh-keygen用来生成ssh公钥认证所需的公钥和私钥文件,可以通过man ssh-keygen了解命令参数。
root@RobotMan:/opt/Workspace/Toolkits# cd ~/.ssh
bash: cd: /home/root/.ssh: 没有那个文件或目录
root@RobotMan:/opt/Workspace/Toolkits# mkdir ~/.ssh
root@RobotMan:/opt/Workspace/Toolkits# cd ~/.ssh
root@RobotMan:~/.ssh$ ls
root@RobotMan:~/.ssh$ ssh-keygen -t rsa -C "xxx@163.com" -f keynames 
  1. 之后会生成keynames和keynames.pub文件,前面是私钥,后面是公钥,此时再将公钥加入到可信任列表里。
root@RobotMan:~/.ssh$ ls
keynames  keynames.pub
root@RobotMan:~/.ssh$ cat keynames.pub >> ~/.ssh/authorized_key

2.Win上vscode端

  1. 在插件商城安装Remote-SSH插件,安装好后打开config文件
    在这里插入图片描述
  2. 配置好的参数如下,Host相当于起个别名;HostName是Ubuntu的IP地址;User是登录Ubuntu的用户;IdentityFile是用来存放私钥的路径。
    在这里插入图片描述
  3. 打开vscode的终端,在终端里输入如下后回车,此时会提示是否继续和验证登录密码,正常输入即可。
PS C:\Users\YanBo> scp root@192.168.1.100:~/.ssh/keynames "C:\Users\YanBo\.ssh\keynames"
  1. 此时点击左下角绿色图标,在上方输入框选择connect to host, 连接成功后左下角如下图:
    在这里插入图片描述
  2. 此时点击左上角菜单,文件->打开文件夹即可选择ubuntu的目录。
    在这里插入图片描述
### VSCode通过SSH连接Ubuntu虚拟机的配置教程 #### 1. 确保环境准备完成 在开始之前,需确认以下几点: - Ubuntu虚拟机已启动并正常运行。 - SSH服务已在Ubuntu上安装并启用。可以通过命令 `sudo systemctl status ssh` 来验证SSH服务的状态[^2]。 - 使用命令 `ifconfig` 或者更现代的 `ip addr show` 查看Ubuntu虚拟机的IP地址,通常是一个类似于 `192.168.x.x` 的局域网地址[^3]。 #### 2. 安装必要的扩展 打开VSCode,在扩展市场中搜索并安装 **Remote - SSH** 扩展。此扩展允许用户通过SSH协议连接至远程服务器或虚拟机[^4]。 #### 3. 配置SSH密钥(如果未设置) 为了安全性和便利性,建议使用SSH密钥而非密码认证。以下是创建和分发公钥的方法: ```bash # 在本地机器生成SSH密钥对(如果尚未存在) ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # 将生成的公钥复制到Ubuntu虚拟机 ssh-copy-id user@<Ubuntu_IP_Address> ``` 上述操作完成后,尝试无密码登录以测试连通性: ```bash ssh user@<Ubuntu_IP_Address> ``` #### 4. 创建SSH配置文件 编辑本地用户的 `.ssh/config` 文件,添加如下内容以便简化连接过程: ```plaintext Host myubuntuvm HostName <Ubuntu_IP_Address> User your_username_on_ubuntu IdentityFile ~/.ssh/id_rsa ``` 这一步可以省去每次输入用户名、主机名以及指定私钥路径的操作[^1]。 #### 5.VSCode中建立连接 回到VSCode界面,按下快捷键 `Ctrl+Shift+P` (Windows/Linux) 或 `Cmd+Shift+P` (Mac),调出命令面板,输入并选择 `Remote-SSH: Connect to Host...` 命令。随后应能看到刚刚定义的别名 `myubuntuvm` 出现于列表之中;选中它之后按照提示逐步完成连接流程。 一旦成功接入目标虚拟机,则可以在左侧活动栏找到新的窗口选项卡代表该远程会话,并在此基础上开展开发工作或者调试任务。 #### 6. 解决常见问题 假如遇到无法连接的情况,请逐一排查下列事项: - 检查防火墙规则是否阻止了来自本机的访问请求; - 确认网络适配器模式(NAT/Bridged Adapter),确保两设备处于同一子网内能够互相通信; - 如果仍然失败,查看日志信息定位具体错误原因,调整相应参数重试。 ```python import paramiko def test_ssh_connection(host, port=22, username='root', password=None, key_filename=None): client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: if key_filename is not None: client.connect(hostname=host, port=port, username=username, key_filename=key_filename) elif password is not None: client.connect(hostname=host, port=port, username=username, password=password) stdin, stdout, stderr = client.exec_command('whoami') output = stdout.read().decode() return f'Connected as {output.strip()}' except Exception as e: return str(e) finally: client.close() print(test_ssh_connection('<Ubuntu_IP_Address>', username='your_username', key_filename='~/.ssh/id_rsa')) ``` 以上脚本可用于初步检测Python环境下能否顺利达成SSH握手动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值