vscode通过ssh连接远程服务器+免密登录(图文)

一、连接ssh服务器

1.打开Visual Studio Code,进入拓展市场(Ctrl+Shift+X),下载拓展Remote - SSH

2. 点击远程资源管理器选项卡,并选择远程(隧道/SSH)类别

3. 点击ssh配置

4.在弹出的选择配置文件中,点击第一个

 5.在config文件中输入以下内容

Host <显示的服务器名字>
    HostName <服务器的ip>
    Port 22
    User <ssh登录的用户名>

如:

6.保存后点击左边刷新按钮

 7.这时展开SSH,就能看到刚刚创建的配置了

 

8. 使用Ctrl + Shift + P,打开命令窗口,输入ssh connect to host,选择第一个(在当前窗口连接)或第二个(在新窗口连接)都可以

9.选择刚刚创建好的那个配置

10.询问是否保存known_hosts,选择Continue即可

 11.输入访问的密码(即第5步配置的用户,其对应的登陆密码)

 12.该用户第一次访问该服务器可以看到该提示信息,耐心等待即可,这时是插件在服务器上面安装需要的依赖,大约会占用服务器150mb左右的空间

 13.如果长时间都一直是该情况,可以使用Ctrl + Shift + P,打开命令窗口,输入reload window来重新加载窗口(会要求你重新手动输入密码)

14.最终显示如下页面就代表已经连接成功了

 

 二、免密登录

1.生成ssh使用的公钥/密钥对,请从客户端上的 PowerShell 或 cmd 提示符运行以下命令,具体使用方法详细见:微软官方

ssh-keygen -t rsa

2.选择的配置文件就是之前连接到服务器使用的配置文件,或者打开刚刚创建的公钥文件

3.进入到编辑页面后,选择id_rsa.pub

4.拷贝id_ras.pub文件中的内容

5.进入终端输入以下命令

 echo "xxxx" >> ~/.ssh/authorized_keys

如:

6.验证方式

  • 使用Ctrl + Shift + P,打开命令窗口,输入重启窗口命令reload window,确认左下角进入到连接成功的状态,期间没有提示输入密码的窗口,即代表成功了

  •  点击资源管理器的打开文件夹,选择任意文件夹打开,期间没有要求输入密码,也代表免密登录配置成功了

三、常见错误情况处理

1.连接过程中出现错误提示:Permission denied (publickey).

这是因为服务器默认禁用了ssh密码登录权限。修改方法如下:

  • 在服务器上的终端输入:sudo vim /etc/ssh/sshd_config,打开该文件。
  • 找到PasswordAuthentication,将其后的 no 改为 yes
  • 重启ssh服务:sudo service sshd restart

2.对于堡垒机的解决方法(未验证)

有时,您可能需要通过公司的内部网或防火墙从台式机或笔记本电脑连接到远程计算机。在这种情况下,您可能正在使用中间服务器或跳转框。如果您在配置为仅接受来自固定主机集的SSH连接的安全系统中工作,则这种设置非常有用。

要使用带有Remote - SSH扩展的跳转框设置,您可以使用ProxyCommand config选项。此配置将打开到跳转框的后台SSH连接,然后通过私有IP地址连接到目标。

您可以在SSH配置文件中设置ProxyCommand config选项,如下所示:

# Jump box with public IP address
Host jump-box
    HostName 52.179.157.97
    User sana
    IdentityFile ~/.ssh/jumpbox

# Target machine with private IP address
Host target-box
    HostName <IP address of target>
    User sana
    IdentityFile ~/.ssh/target
    ProxyCommand ssh -q -W %h:%p jump-box

或者是

This requires making an ssh tunnel inside the bastion tunnel which will allow multiple connections:

  • Add the following to your $HOME.ssh\config
Host tunnel
  HostName 127.0.0.1
  Port 2222
  User mylogin
  StrictHostKeyChecking=No
  UserKnownHostsFile=\\.\NUL
  • Add the tunnel connection to your Establish the tunnel connection:

    az network bastion tunnel --name mybastion --resource-group myrg --target-resource-id /subscriptions/<mysubscription>/resourceGroups/myrg/providers/Microsoft.Compute/virtualMachines/myvm --resource-port 22 --port 22

  • Create an ssh tunnel in the bastion tunnel

    ssh -L 2222:127.0.0.1:22 mylogin@127.0.0.1

  • Have VSCode connect to your "tunnel" connection above.

参考以下文:Remote SSH via Azure Bastion (with AAD auth) · Issue #7179 · microsoft/vscode-remote-release (github.com)Visual Studio Code Remote SSH Tips and Tricks

Make the limitations of the `az network bastion tunnel` feature explicit · Issue #98747 · MicrosoftDocs/azure-docs (github.com)

### 解决 VSCode 使用 SSH 连接远程服务器时出现超时问题 当遇到 VSCode 通过 SSH 连接远程服务器时提示 `Connecting with SSH timed out` 的错误,可以通过调整 VSCodeSSH 配置来解决问题。 #### 修改 VSCode Remote-SSH 扩展设置 一种有效的方法是修改 VSCode 中的 Remote-SSH 插件配置。具体操作如下: 点击左侧活动栏中的扩展图标,找到并选中已安装的 "Remote - SSH" 扩展项。接着点击右侧的小齿轮按钮,在弹出菜单中选择「Extension Settings」即插件设置选项[^3]。随后在设置界面内定位至 "Edit in settings.json" 并进行编辑。确保 JSON 文件中有以下字段存在,并将其值设为 true: ```json { "remote.SSH.useLocalServer": true, } ``` 此更改有助于优化本地与远端之间的通信效率,从而减少因网络延迟造成的连接中断风险[^4]。 #### 调整 SSH 客户端参数 除了上述方法外,还可以尝试增加 SSH 客户端的心跳保持时间(KeepAlive),防止由于长时间无数据传输而导致断开连接的情况发生。这通常涉及到对用户级或全局级别的 SSH 配置文件做出相应改动。对于 Linux 或 macOS 用户来说,默认情况下这些配置位于 ~/.ssh/config;而对于 Windows,则取决于 OpenSSH 的安装位置。 向该配置文件追加下面的内容可以帮助维持稳定的会话状态: ```bash Host * ServerAliveInterval 60 TCPKeepAlive yes ``` 这段配置使得每分钟发送一次心跳包给服务端确认链接存活状况,同时启用TCP层面的保活机制以增强稳定性[^1]。 #### 清理缓存重试 如果之前的操作未能奏效,考虑清理可能存在的残留数据再做尝试。针对 Mac OS 系统而言,可按照下述路径移除本地存储的相关扩展资料 `/Users/<用户名>/.vscode/extensions/` ,以及远程主机上的 `.vscode-server/` 目录下的所有内容 。完成清除工作之后,利用快捷键组合 Ctrl+Shift+P (Windows/Linux) 或 Cmd+Shift+P (Mac),输入命令 “Kill VS Code Server on Host”,执行完毕后再次发起新的 SSH 请求试试看效果如何[^5]。 以上措施综合运用能够显著改善 VSCode 透过 SSH 实现远程开发环境构建过程中的成功率和流畅度。
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值