使用vscode+ssh免密远程Linux

本文介绍了使用 VS Code 通过 SSH 免密连接 Linux 主机的方法。首先要生成 SSH 密钥对并复制公钥到远程主机,在 VS Code 中安装“Remote - SSH”扩展后进行连接配置。还提到了 SSH Agent 的使用,它能管理私钥,适用于多密钥连接和私钥设密需频繁认证的场景。

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

使用 SSH 密钥对:

  1. 确保你的本地机器上已经生成了 SSH 密钥对。如果没有,请使用以下命令生成密钥对:

    ssh-keygen -t rsa
    

    这将在 ~/.ssh 目录下生成公钥文件 id_rsa.pub 和私钥文件 id_rsa。

  2. 将公钥复制到远程 Linux 主机上。可以使用以下命令将公钥复制到远程主机(假设远程主机的 IP 地址为 192.168.1.89):

    ssh-copy-id -i ~/.ssh/id_ed25519 user@192.168.1.89
    

    这将将公钥添加到远程主机的 ~/.ssh/authorized_keys 文件中,并允许你使用私钥进行无密码登录。

    如果 ssh-copy-id 命令不可用,你可以手动将公钥内容复制到远程主机的 ~/.ssh/authorized_keys 文件中。

  3. 在 VS Code 中安装 “Remote - SSH” 扩展。在扩展市场中搜索 “Remote - SSH” 并进行安装。

  4. 在 VS Code 中打开命令面板(win快捷键:Ctrl+Shift+P, macOS快捷键:command+shift+p)并搜索 “Remote-SSH: Connect to Host”。选择该选项后,会出现一个输入框。

  5. 在输入框中输入 SSH 连接的完整命令,例如:

    ssh -i ~/.ssh/id_ed25519 user@192.168.1.89
    

    这将连接到远程主机,并将其添加到 VS Code 的 SSH 配置中。

  6. 选择配置文件类型,例如 “Linux”。

  7. 等待连接完成。一旦连接成功,VS Code 将在远程主机上打开一个新的窗口,你可以在其中编辑远程主机上的文件。

现在,你可以通过 VS Code 进行免密的远程连接到 Linux 主机了。每次打开 VS Code 并选择相应的连接配置,它都会自动使用 SSH 密钥进行身份验证,而无需手动输入密码。

使用 SSH Agent:

SSH Agent 是一个身份验证代理,它可以在你的登录会话期间管理私钥。你可以将私钥添加到 SSH Agent 中,并在需要时自动使用它进行身份验证。

  1. 运行ssh-agent

    # 启动 ssh-agent 并自动设置环境变量
    eval "$(ssh-agent -s)"
    
  2. 添加私钥到 SSH Agent:

    # 添加指定私钥
    ssh-add ~/.ssh/id_rsa
    # 自动添加已有私钥
    ssh-add
    # 查看
    ssh-add -l
    
  3. 配置公钥登录优先(如果能连的情况下, 这一步可以省略)

    # 本地电脑配置~/.ssh/config
    Host remote_host
        HostName remote_host.example.com  # 替换为实际的远程主机名或IP
        User user                           # 替换为实际的用户名
        # PreferredAuthentications 选项定义了 SSH 客户端尝试认证方法的顺序。将 publickey 放在前面,确保优先使用公钥认证。
        PreferredAuthentications publickey,password
        # 或者更严格地只使用公钥认证(如果确定服务器支持)
        # PreferredAuthentications publickey
    
  4. 确保公钥在服务器中(正常是运维提供密钥, 可以放到本地电脑的这里~/.ssh/private_key)(运维提供情况可省略这步)

    # 没有公钥的情况下, 自己放到服务器上去
    # 查看生成的公钥(本地电脑执行)
    cat ~/.ssh/ed25519.pub
    # 将公钥写入ssh认证key文件中(目标服务器执行)
    echo "ed25519 xxx your_email@example.com"  >> ~/.ssh/authorized_keys
    # 或者直接使用上面提到的ssh-copy-id命令自动上传
    
  5. 测试

    # 现在你可以使用 SSH 连接到远程服务器,而不需要每次都输入密码
    ssh user@remote_host
    # 或者使用ssh config的方式
    ssh remote_host
    

现在,SSH Agent 将在你的登录会话期间管理私钥,当你通过 SSH 连接到服务器时,它将自动使用私钥进行身份验证。

ssh-agent的使用场景

  1. 使用不同的密钥连接到不同的主机时,需要手动指定对应的密钥。ssh-agent 可以帮助我们选择对应的密钥进行认证,不用手动指定密钥即可进行连接。

  2. 当私钥设置了密码,我们又需要频繁的使用私钥进行认证时,ssh-agent 可以帮助我们免去重复的输入密码的操作。

### 配置VSCode通过SSH密钥连接至远程服务器 为了实现VSCode通过SSH密钥连接到远程服务器,需完成几个关键步骤。在Windows环境中,确保已安装OpenSSH[^2];对于Mac系统,则主要关注于VSCode插件配置以及SSH密钥管理。 #### 安装并配置Remote-SSH插件 在Visual Studio Code中安装名为“Remote - SSH”的扩展插件后,左侧状态栏会出现一个绿色图标表示该插件已经准备好使用。此操作适用于任何操作系统平台上的VSCode版本。 #### 创建或获取现有的SSH私钥与公钥对 如果尚未拥有SSH密钥对,在本地机器(无论是Windows还是Mac)打开命令提示符或者终端执行如下命令来生成一对新的RSA类型的SSH密钥: ```bash ssh-keygen -t rsa -b 4096 -C "your_email@example.com" ``` 上述命令将会引导用户指定保存位置,默认情况下会在`~/.ssh/id_rsa`及其对应的`.pub`文件内存储私钥和公钥[^4]。 #### 将公钥添加到远程主机 接着要把新生成的公钥(`id_rsa.pub`)内容追加进目标Linux服务器上的`~/.ssh/authorized_keys`文件之中。可以通过下面的方式快速完成这一步骤: ```bash cat ~/.ssh/id_rsa.pub | ssh user@hostname 'umask 0077; mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys' ``` 这里假设读者已经在本地计算机上设置了正确的SSH代理以便能够顺利地向远端发送指令。 #### 编辑VSCodeSSH Configurations 最后回到VSCode内部调整其用于描述各个远程节点信息的配置文档——即位于用户主目录下的`.ssh/config`文件。按照以下模板填写相应字段以匹配个人实际情况: ```plaintext Host myserveralias HostName your.server.ip.or.domain.name User username_on_remote_machine IdentityFile ~/.ssh/id_rsa ``` 注意替换其中占位符部分为实际值,并且确认路径指向的是之前创建好的私钥文件所在之处[^1]。 一旦完成了以上全部准备工作,就可以尝试利用VSCode内置的功能去建立同那台特定命名过的远程主机之间的安全连接了。此时应该不再需要每次输入码就能顺利完成认证流程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随猿Fa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值