SSH实例:VsCode配置
一、VsCode配置ssh免密连接
Step1 VsCode安装ssh插件


Step2 VsCode设置ssh插件

Step3 检查服务器配置
首先查看服务器IP地址:
1 | # Linux |
检查服务器sshd使用的默认22端口是否开启
1 | # 检查22端口状态 |
配置免密登录:先通过前文生成对应的密钥对,然后根据下列步骤在服务器上
1 | ### 开启免密登录功能 ### |
Step4 配置ssh设置

修改配置文件如下:
1 | Host MyUbuntu-codeLearning # Host后接SSH连接名 |
可能遇见的错误提示:
错误一:“过程试图写入的管道不存在”
笔记本链接时失败,提示:过程试图写入的管道不存在
推测原因:之前使用Putty进行SSH链接时储存了过时的信息(配置密钥后失效过)
解决方案:解决方案就是把本地的known_hosts的原服务器信息全部删掉(根据IP地址删除),然后重新连接就可以了。
详见:https://blog.csdn.net/u013066730/article/details/119924403
错误二:免密失败
提示免密失败,连接时仍然提示需要输入密码
可能原因:
(1)IdentityFile 拼写错误
(2)没有正确识别私钥文件,失败提示如下:No such file or directory
二、VsCode使用跳板机实现SSH连接
问题:
使用VsCode时,如果目标机器需要经过跳板机连接,则使用VsCode远程连接插件时,插件只能读取到跳板机的设置,而真正访问目标机器则是再跳板机的terminal终端中操作,十分的麻烦
解决:
使用OpenSSH与VsCode的ssh config中的proxy command完成跳转
参考: VSCode Remote ssh跳板机配置(windows平台) - 知乎 (zhihu.com)
实战:
修改~/.ssh/config中内容如下:
1 | Host SSH跳板机实验-JumpMachine |
注:
1.为什么一定要安装openssh?
因为在windows上VSCode使用的默认ssh工具存在实现上的问题,导致一旦我们直接使用默认ssh连接会有报错:”过程试图写入的管道不存在”(The process tried to write to a nonexistent pipe)。因此,我们务必安装openssh,并在设置ProxyCommand时使用安装好的openssh来进行连接。
2.ProxyCommand中每个参数的意义?
“-W”表示stdio forwarding模式,接着后面的%h是一个占位符,表示要连接的目标机,也就是Hostname指定的ip或者主机名。%p同样也是占位符,表示要连接到目标机的端口。这里可以直接写死固定值,但是使用%h和%p可以保证在Hostname和Port变化的情况下ProxyCommand这行不用跟着变化。