作者 : Jeannnette
引言: 首先在日常使用Linux中,肯定遇到很多需要远程编辑linux上面的文件的场景,虽然可以很方便的使用svn服务器/git服务器之类,但是为了有时候更便捷的使用,我还是想直接使用vscode进行编辑文件
Let's Go, Get it !
完成后图如下: (可以在线编辑)远程Linux系统文件, 非常适合需要及时更改远程服务器
基础配置
步骤如下
- 安装,OpenSSH,建议去官网安装 我提供如下路径:
第一个 (官网):http://www.openssh.com/portable.html#http
第二个(其它): https://openssh.en.softonic.com/
- 当安装完成后-如果是win10需要把当前安装目录添加至系统环境变量
1. 找到你安装的目录 \bin 目录
2. 例如: F:\DEVLOP\openSSH\bin
3. 将\bin目录添加到环境变量
4. 我的电脑右击属性 - 高级系统设置 - 高级 - 环境变量
- 安装vscode需要的插件,大概需要添加一下这些内容
- 安装完成之后会发现vscode里面会多出一个小图标
- 点击其中的设置图标,进入到配置文件,默认配置文件会安装在windows系统生成秘钥的地方
%USERPROFILE%\.ssh\
HostName : linux服务器 ip 地址
User: 用户名
IdentityFile: ~/.ssh/id_rsa-remote-ssh #
这个讲是第二种配置方式需要添加的,如果使用第一种方式不需要添加这个指定的文件
- 添加之后当打开powershell管理员 模式下 进行生成公钥与私钥
第一种实现方式:
-
配置SSH密钥
检查本地计算机上是否已有SSH密钥(非对称加密)。window公钥通常位于路径:
%USERPROFILE%\.ssh\,如果没有发现id_rsa.pub文件, 代表本地没有生成过SSH秘钥,使用以下命令:ssh-keygen -t rsa -b 4096 # 只需要一直回车就能生成到 %USERPROFILE%\.ssh\ 目录下 -
在Windows上,在本地命令提示符中运行以下命令,替换REMOTEHOST的两个值[your-user-name-on-host]和[host-fqdn-or-ip-goes-here]
SET REMOTEHOST=[your-user-name-on-host]@[host-fqdn-or-ip-goes-here] scp %USERPROFILE%\.ssh\id_rsa.pub %REMOTEHOST%:~/tmp.pub ssh %REMOTEHOST% "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub" # PS: # your-user-name-on-host: 你的主机用户名 # host-fqdn-or-ip-goes-here:你的主机ip如果以上命令出现问题,那么直接手动把目录
%USERPROFILE%\.ssh\id_rsa.pub的 公钥内容 复制到 linux下/[用户名]/.ssh/authorized_keys文件里面进行保存
第二种实现方式:比上一中安全安全的方式
虽然在所有SSH主机上使用单个SSH密钥可以很方便,但如果有人可以访问您的私钥,他们也可以访问所有主机。您可以通过为开发主机创建单独的SSH密钥来防止这种情况。只需按以下步骤操作
-
在另一个文件中生成单独的SSH密钥。
ssh-keygen -t rsa -b 4096 -f %USERPROFILE%\.ssh\id_rsa-remote-ssh -
在VS Code中,运行Remote-SSH:打开配置文件...在命令选项板(F1)中,选择SSH配置文件,然后添加(或修改)主机条目,如下所示:(其实这个就是一个配置文件, 在基础配置中的方式打开一样的)
Host name-of-ssh-host-here User your-user-name-on-host HostName host-fqdn-or-ip-goes-here IdentityFile ~/.ssh/id_rsa-remote-ssh- 在Windows上,在本地命令提示符中运行以下命令,替换name-of-ssh-host-here为步骤2中SSH配置文件中的主机名。
SET REMOTEHOST=name-of-ssh-host-here SET PATHOFIDENTITYFILE=%USERPROFILE%\.ssh\id_rsa-remote-ssh.pub scp %PATHOFIDENTITYFILE% %REMOTEHOST%:~/tmp.pub ssh %REMOTEHOST% "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat ~/tmp.pub >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys && rm -f ~/tmp.pub"
检查是否连接成功
然后就能添加小目录到指定 linux 下的文件,并且通过ssh连接,进行在线的编辑代码或者是文档了
其他报错情况
error: An SSH installation couldn't be found
这个报错通常是因为,vscode没有指定好相应的路径好, 需要到
Settings --> Remote.SSH.Path进行指定OpenSSH的路径