VSCode + Remote-SSH + Linux服务器远程开发
VSCode新增加一个Remote-SSH
插件,它可以用来打开Linux服务器上的的文件夹!!!
VSC 通过 Remote Development
插件连接上远程服务器,然后打开服务器上的文件夹作为workspace
。无需将服务器上的各种头文件和源码拷贝到本地上,我们就能使用包括 IntelliSense (completions)
、code navigation
及 debugging
在内的各种功能。最后,我们还能使用编辑器内置的终端操纵服务器,去做一些 build、release 这样的事情.
1. 准好本地机器Windows10系统
安装Win10系统, 默认系统会安装OpenSSH
, 如果本地机器没有装, 需要专门安装一下, 注意这里需要安装OpenSSH-Client
客户端. 并且在Windows中powershell
中使用ssh-keygen.exe
生成一对公私钥, 存储在C:\Users\brownfeng\.ssh\
文件夹中, 具体步骤如下
具体步骤:
本机操作环境:Windows 10 1909(此版本的系统自带SSH)
远程机器环境: Ubuntu18.04
- 打开CMD,当前用户命令下:
ssh localhost(目的在于创建.ssh目录)
- cd进
.ssh
文件, 调用ssh-keygen
: 生成id_rsa(私钥)id_rsa.pub(公钥) - 进入远程Ubuntu操作环境,用户环境下创建
[.ssh]
文件夹,cd
进.ssh
文件夹,创建文件[authorized_keys]
- 在windows机器上使用, scp命令传送
id_rsa.pub
文件到远程机器:scp [file_path] [username]@[remote-host]:[.ssh路径]
scp C:\Users\ppfor/.ssh/id_rsa.pub brownfeng@192.168.0.103:/home/brownfeng/.ssh
- 登录远程Ubuntu操作环境, 将
id_rsa.pub
信息导入authorized_keys
cat id_rsa.pub >> authorized_keys
- 更改权限
chmod 600 authorized_keys
chmod 700 ~/.ssh
- 修改VS code配置文件
config
为Windows环境下路径 ~/.ssh/
2. 在本地机器上安装VSCode
常规插件安装如下:
C/C++
Bracket Pair Colorizer
Chinese (Simplified) ...
CMake
CMake Tools
Trailing Spaces
Indenticator
SFTP
Remote-SSH
其他的配置使用Ctrl+Shift+P
,选自setting(JSON)
{
"remote.SSH.showLoginTerminal": true,
"window.title": "${dirty}${activeEditorLong}${separator}${rootName}${separator}${appName}",
"editor.minimap.maxColumn": 40,
"editor.wordSeparators": "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?·~!¥…()—【】、;:‘’“”,。《》? ",
"workbench.sideBar.location": "left",
"editor.fontFamily": "'Source Code Pro', Consolas, 'Courier New', monospace",
"editor.detectIndentation": false,
"editor.tabSize": 2,
"files.trimTrailingWhitespace": true,
"files.autoGuessEncoding": true,
// "C_Cpp.default.intelliSenseMode": "gcc-x64",
// "C_Cpp.default.includePath": [
// "/usr/include",
// "/usr/local/include",
// "${workspaceFolder}/**"
// ],
"C_Cpp.clang_format_fallbackStyle": "Google",
"cmake.configureOnOpen": true,
"editor.fontSize": 16,
}
3. 准备好远程Linux机器
这里Linux系统选择的是
Ubuntu 18.04
版本
这里远程机器可以是使VirtualBox
中安装的ubuntu18.04
, 也或者是同一个网络中的其他Linux机器. 并且Linux机器上需要如下配置:
- 检测ssh服务是否启动:
ps -axu | grep ssh
, 判断是否有sshd
服务 - 如果没有
sshd
服务, 需要用sudo apt-get install openssh-server
- 如果没有启动, 也可以使用
sudo service ssh start
或者/etc/init.d/ssh resart
重启 - 将前面windows中创建的
id_rsa.pub
文件拷贝到linux
主机中,然后创建一个文件 --~/.ssh/authrized_keys
. 同时将id_rsa.pub
内容拷贝进入authrized_keys
文件 - 使用
vim /etc/ssh/sshd_config
,配置远程Linux主机打开SSH密钥登录设置:PubkeyAuthentication yes
PermitRootLogin yes #允许root认证登录
PasswordAuthentication yes #允许密码认证
RSAAuthentication yes #秘钥认证
PubkeyAuthentication yes #公钥认证
拷贝方法可以用
cat id_rsa.pub >> ~/.ssh/authorized_keys
当有多台本地机器都要连接远程机器怎么办?只用将本地机器的公钥 append 到authorized_keys
中就行。
4. 开始远程连接
在Windows机器上打开VSCode, 然后点击界面最左边的 Remote-SSH
, 然后点击点击左上方 CONNECTION
窗口中的蓝字 Configure
,并选择包含 .ssh\config
的配置文件, 并且在配置文件中填入:
Host Ubuntu
# 这里填入要在远程主机上登录的用户名
User brownfeng
# 这里填入远程主机 IP
HostName 192.168.x.xxx
# 这里填入远程主机 ssh 端口
Port 22
# 这里填你私钥的路径
IdentityFile c:\Users\brownfeng\.ssh\id_rsa
# 当需要跳板机的时候就要填这个了
# 这里代理类型根据需求填 socks4、socks5 或 http
# 这里 xxx.xxx.xxx.xxx:xxx 表示跳板机 IP:端口
# 这里 %h %p 无需修改,将自动分别读取 HostName 和 Port 的配置并填入
#ProxyCommand C:\bin\nmap-7.70\ncat.exe --proxy-type http #--proxy xxx.xxx.xxx.xxx:xxx %h %p
注意: Windows 10 的 openSSH 里没有自带的用于支持 ProxyCommand 的工具,所以我们需要额外下载 ncat.exe 或 connect.exe。由于笔者在尝试 connect.exe 的时候遇到了无从解决的错误,所以这里仅介绍了 ncat.exe 的使用方式。这里假设你下载了(传送门)并解压到了 c:\bin。所以你可以通过 C:\bin\nmap-7.70\ncat.exe 找到 ncat.exe。
此时已经在VSCode中重启打开窗口,远程连接上了Linux中的内容.
其他参考
参考
https://zhuanlan.zhihu.com/p/100759746
https://blog.csdn.net/sixdaycoder/article/details/89850064
https://blog.csdn.net/maokelong95/article/details/91801944
https://www.zhihu.com/question/30315894/answer/928959062
https://www.baidu.com/link?url=2S1ImETasuzCgi_1SzolRpvTlC-9g5Ma2jTPd7kTez834S-GicesjpUbJIK-Z9I9&wd=&eqid=dbdfd12f00056500000000055e3fe011