reference
windows可以直接在cmd/powershell内直接通过
wsl
或bash
调用wsl终端
下面是其他形式连接wsl的方式
vscode+remote-wsl插件:
remote-wsl
这是最简单的VSCode链接wsl的方式
在使用这种方式连接的时候,需要为wsl安装extension;windows上的vscode插件默认不可用
后面将会介绍到,您可以使用remote-ssh插件,也能够连接的wsl
(右键connect)
vscode_wsl窗口:
wsl+code 命令
通用ssh连接wsl 配置
- 其实windows可以直接连接到wsl
- 不过某些时候可以用到(比如vscode连接,虽然有相应插件,但是可以整合到remote ssh)
检查现有的软件包(apt)
apt list 方法
- 对于较新(不太老旧)版本的发新版,可以使用apt
sudo apt list
可以获取(源/库)所有包列表(包括未安装的)sudo apt list --installed
可以获取已经安装的包列表
# cxxu @ cxxuAli in ~/cppCodes on git:master o [11:14:18] C:130
$ sudo apt list |wc -l
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
76631
# cxxu @ cxxuAli in ~/cppCodes on git:master o [11:15:13]
$ sudo apt list --installed |wc -l
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
1057
apt 常用命令
apt-get
- 如果没有
apt
命令,但是又apt-get
您可以先安装apt
工具,让后再使用上述方法操作 - 可以查看到软件的版本信息
- 字段的大概含义参考
dpkg-query -l
sudo apt-get install apt
关于man <searchStr>
命令得到的结果
- 即使您的linux没有安装某个软件包,但是还是可能从man中查询到用法
- 或者说,
man
命令返回的消息不依赖于已安装的包,而在于软件源那里下载过来的信息(个人猜测可能是apt[-get] update
所拉取到的信息)
dpkg --list 方法(for debian series)
比较成熟的方法 dpkg
dpkg --list
dpkg-query actions
See dpkg-query(1) for more information about the following actions.
-l, --list package-name-pattern...
List packages matching given pattern.
-s, --status package-name...
Report status of specified package.
-L, --listfiles package-name...
List files installed to your system from package-name.
-S, --search filename-search-pattern...
Search for a filename from installed packages.
-p, --print-avail package-name...
Display details about package-name, as found in
/var/lib/dpkg/available. Users of APT-based frontends
should use apt-cache show package-name instead.
dpkg-query 方法
dpkg-query
A tool that shows information about installed packages.
More information: https://manpages.debian.org/latest/dpkg/dpkg-query.1.html.
- List all installed packages:
dpkg-query -l
- List installed packages matching a pattern:
dpkg-query -l 'pattern'
- List all files installed by a package:
dpkg-query -L package_name
- Show information about a package:
dpkg-query -s package_name
- 可以查看到相关主题包的状态(详见
man dpkg-query
) dpkg-query -l '*ssh*'
- 正则模式需要用引号(单引号)括起来
- 正则模式需要用引号(单引号)括起来
dpkg 管理工具
DESCRIPTION
dpkg is a tool to install, build, remove and manage Debian packages. The primary and more user-
friendly front-end for dpkg is aptitude(1). dpkg itself is controlled entirely via command line
parameters, which consist of exactly one action and zero or more options. The action-parameter tells
dpkg what to do and options control the behavior of the action in some way.
检查ssh是否安装
sudo apt list --installed|grep ssh
sudo dpkg --list|grep ssh
$ sudo apt list --installed|grep ssh
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
openssh-client/bionic-updates,now 1:7.6p1-4ubuntu0.6 amd64 [installed]
openssh-server/bionic-updates,now 1:7.6p1-4ubuntu0.6 amd64 [installed]
openssh-sftp-server/bionic-updates,now 1:7.6p1-4ubuntu0.6 amd64 [installed,automatic]
ssh/bionic-updates,bionic-updates,now 1:7.6p1-4ubuntu0.6 all [installed]
ssh-import-id/bionic-updates,bionic-updates,now 5.7-0ubuntu1.1 all [installed,automatic]
-
在确保
软件源(/etc/apt/sources.list)
中的源可用下执行 -
sudo apt install openssh-server
-
对于老版本的ubuntu
alias apt=apt-get
尝试启动ssh
如果已安装ssh,可以尝试执行
sudo service ssh start
检查ssh相关进程
sudo ps -e |grep ssh
cxxu_kali➜~» sudo ps -e |grep ssh [12:54:33]
676 ? 00:00:00 sshd
重装ssh服务(optional)
自带的openssh 可能有点问题,如果需要卸载重新装(ubuntu/kali),执行如下命令
sudo apt remove openssh-server
sudo apt install openssh-server
编辑ssh 配置文件
## 编辑ssh 配置文件
sudo vim /etc/ssh/sshd_config
- 大概在15行/58行附近分别设置
Port
和passwordAuthentication
即,在原有的行解开注释(其他需求自行配置)
放行端口22
允许密码登录passwordAuthentication yes
登录root用户/普通用户
- 登录普通用户至此应该可以
- 但是root用户(root@hostname)可能需要额外的配置
- 也可以通过先登录普通用户,然后基于普通用户执行
sudo -i
等操作进行切换
- 也可以通过先登录普通用户,然后基于普通用户执行
重启ssh服务
完成配置后,需要重启ssh服务
sudo service ssh restart
注意ssh服务的启动
- 手动启动ssh 服务,否则vscode 无法通过ssh连接上wsl
不过这一点,采用wsl插件或许更为方便 - 幸运的是,您可以设置开启wsl自动启动(在linux中,实现这一点比windows更简单,在linux中开机自启软件和其他一些永久有效配置类似,通过将启动命令写入到开机运行的配置文件中即可,例如,您可以将
service sshd start
写入到/etc/rc.local
中(不存在该文件时创建一个即可)
开机启动ssh
echo "service sshd start" |sudo tee -a /etc/rc.local
## check the result:
cat /etc/rc.local
连接:用户名@主机名的方式
- 通过输入bash可以看到(用户名@主机名)
- 或者命令行查询
hostname
whoami
分别查得主机名和用户名
vscode remote-ssh 插件连接wsl 效果
初次连接需要下载一些服务,这和第一个插件类似
等待时间在3分钟内
wsl中使用code
利用powershell 调出wsl后,键入
code
,同样可以在本地vscode中编辑文件wsl中的文件
权限问题
保存需要权限的文件时,参看其他解决方案(比如安装插件)
Save as Root in Remote - SSH - Visual Studio Marketplace