配置 SSH 和 Samba
为了开发更加的方便,搭建了SSH、Samba、Docker这些使用比较频繁的工具,在此记录一下。分享经验和踩过的坑,希望对后续要做这块的同学会有点帮助,能快速上手。欢迎评论区提出宝贵意见,一起交流,共同进步。
本文主要从三个部分来介绍:
- 搭建常用开发环境
- 安装Samba
- docker的基础知识
1. 搭建常用开发环境
1.1 VScode通过SSH连接Ubuntu
- 在windows下安装VScode,下载地址:https://code.visualstudio.com/Download
- 在VScode扩展地方安装以下几个插件

- 在Ubuntu中也需要安装SSH,在终端中通过以下两个命令安装。
1
2
3
4
5
|
sudo apt-get install ssh
sudo apt-get install openssh-server
# 并查看当前Ubuntu的IP地址
ifconfig
|
- 在Vscode下按住
Ctrl+Shift+P
,输入 remote
选择下图中的SSH配置文件进行配置。 
- 根据在Ubuntu中通过命令
ifconfig
得到的ip地址填写到配置中 
- 在Vscode下按住
Ctrl+Shift+P
,输入 remote
选择 Remote-SSH
进行连接。 
1.2 错误处理
如果出现 An SSH installation couldn't be found
,则需要在windows下安装SSH的客户端并配置环境变量。
- 可以
win+R
输入 cmd
进入命令行里,输入 ssh
查看windows有没有安装SSH。 
- 一般情况下
win 10
默认安装了SSH,但是像 win 7
就没有默认安装,就需要安装一下。
- windows下SSH软件安装地址:
1.3 配置SSH无密码连接(非必要)
- 在
Windows
的命令行中输入 ssh-keygen -t rsa -C "xxx@123.com"
,按 Enter
键3次生成以下文件,将框起来的文件拷贝到虚拟机中的 home
目录下。 
- 在
Ubuntu
的终端下,输入一样的命令 ssh-keygen -t rsa -C "xxx@123.com"
,也是按 Enter
键3次。
- 在
Ubuntu
的终端下,进入刚刚拷贝的 id_rsa.pub
的目录下,将id_rsa内容以追加的方式,写入anthorized_keys文件里。命令为以下:
1
|
cat id_rsa.pub >> ~/.ssh/authorized_keys
|
至此,免密登录就已经完成,下次登录不需要再输入密码啦~
2.安装Samba
我们在开发的过程中,难免需要在与目标机器来回拷贝数据。而VMwere有时候tool工具不是很好用,更新tool还时常出现问题。所以我们一般情况就会安装一个Samba来解决这个问题,让访问目标机器就像访问自己磁盘一样简单。那我们开始吧~
- 在
Ubuntu
中安装我们所需的软件 Samba
。
1
|
sudo apt-get install samba
|
- 配置
samba
,在打开的文件末尾添加如下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
sudo vim /etc/samba/smb.conf
# 要添加的内容如下
[share]
comment = Temporary file space
path = /home/user/
writable = yes
browseable = yes
guest ok = yes
public = yes
valid users = user
readonly = yes
# Tisp 此处需要vi 或者 vim工具来进行修改
# 缺少工具就使用 sudo apt-get install vim 安装一下
# 输入sudo vim /etc/samba/smb.conf 之后按 i 就可以粘贴啦(插入模式)
# 粘贴之后按 Esc 推出插入模式
# 此时按 Shift + ; 键进入命令行模式
# 输入 wq 按回车即可保存并退出
# 每次改动之后 source 是一个好习惯
source /etc/samba/smb.conf
|
- 用下面的命令添加自己的登录用户名和密码,建议与Ubuntu的一致(对外的设备可不能这么玩)。
1
2
|
sudo smbpasswd -a 用户名
输入两次密码
|
- 添加 Ubuntu 的网络映射

- 配置 samba 的路径
\\192.168.111.129\share
,即 Ubuntu
的IP地址加共享的路径。 
- 在输入刚刚设置的用户名和密码后,就完成啦~

3.docker的基础
3.1 docker 是什么,用来干什么?
在开发的过程中我们需要搭建很多很多的环境,但是换一个Ubuntu的时候就要重新再次搭建。想想痛苦的过程不是很想经历多次,毕竟还是撸代码爽呀~
所以我们就需要一个专门保存我们搭建好的环境,用的时候拿出来就好了,这就是docker的作用了,一个类似沙盒的虚拟机。
目前来看,我们使用docker是为了适配各种不同的编译构建环境,docker是运行在linux系统下的虚拟系统(也可以把docker认为是一个VMware)。通过docker去编译构建,相当于把工程放入到沙盒中去操作,非法操作对主机无任何影响。
3.2 获取 docker
这里就是安装docker的软件,安装完成还需要下载对应的镜像才能使用哦。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# 安装docker
sudo apt install docker.io
# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io
sudo apt-get update
# 添加一个新的 HTTPS 软件源,安装一些允许通过HTTPS才能使用的软件包
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# curl 导入源仓库的 GPG key,将官方Docker存储库的GPG密钥添加到系统
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 将 Docker APT 软件源添加到系统
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 安装docker (docker-ce 社区版、 docker-ee 企业版)
sudo apt update
sudo apt install docker-ce
#sudo apt-get install docker-ce docker-ce-cli containerd.io
# 验证docker
sudo systemctl status docker
# 输出大概如下
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-05-21 14:47:34 UTC; 42s ago
# 以上,docker工具下载完成
|
3.3 获取docker镜像
Docker容器是从Docker镜像构建的。默认情况下,Docker从 Docker Hub 中提取这些镜像,这是一个由Docker管理的Docker镜像市场,这是Docker项目背后的公司。任何人都可以在Docker Hub上托管他们的Docker镜像,所以您只需要将您的应用程序和Linux放在那边托管即可。
S
1
2
3
4
5
6
7
8
9
|
# 查找远端的镜像
sudo docker search ubuntu
user@ubuntu:~$ sudo docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 16717 [OK]
websphere-liberty WebSphere Liberty multi-architecture images … 296 [OK]
ubuntu-upstart DEPRECATED, as is Upstart (find other proces… 115 [OK]
neurodebian NeuroDebian provides neuroscience research s… 105 [OK]
|
1
2
3
4
5
6
7
8
|
# 获取远端镜像
sudo docker pull ubuntu
# 查看镜像
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest df5de72bdb3b 2 days ago 77.8MB
|
3.4 运行 docker
这里就是把下载好的镜像通过docker运行起来。
1
2
3
4
5
6
7
8
|
# 运行
docker run -it -v $(pwd):/home/openharmony ubuntu # /home/openharmony 可以自定
docker run -it --name my_name --hostname ubuntu_name -v $(pwd):/home/openharmony ubuntu # 这个是指定主机名和运行的用户名称
# $(pwd) 这是shell命令,获取当前路径
# my_name 可用于删除这个运行的docker
# ubuntu_name 是docker进去之后显示的主机名字
|
3.5 保存修改后的镜像
我们每次进去这个docker镜像,他都是上次保存的样子。如果我们需要搭建环境,都配置好了怎么拿到别的环境中去使用呢?跟我一起来实现吧~
- 先进入docker,把需要的环境配置好,此时需要返回到
ubuntu
中来,可以在 ubuntu
中再开一个终端进行操作。
- 使用以下的命令进行保存当前的修改。
1
2
3
4
5
6
7
8
|
# 查看运行中的 docker
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
bde135cb1ab9 ubuntu "bash" 2 minutes ago Up 2 minutes sweet_cori
# 保存指定镜像的改动,前提是docker未退出的情况下进行
docker commit bde135cb1ab9 ubuntu
|
3.6 打包 docker 镜像
环境配置好了,怎么给到别的环境去使用呢?那就需要以下两种方式打包出来了。
1
2
3
4
5
6
7
8
9
10
11
|
# 查看已有镜像
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest df5de72bdb3b 2 days ago 77.8MB
# 保存镜像
docker save df5de72bdb3b ubuntu > ubuntu.tar
# 加载镜像
docker load < ubuntu.tar
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# 查看 docker
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES
ffcdad1d05af ubuntu "bash" 6 seconds ago Up 6 seconds hardcore_lumiere
# 导出镜像 中间的参数是docker ps 查看运行中的docker才能导出
docker export ffcdad1d05af > ubuntu.tar
# 在新机器导入镜像
docker import - ununtu < ubuntu.tar
# 新机器首次运行 可能需要加 /bin/bash
docker run -it -v $(pwd):/home/openharmony ubuntu /bin/bash
|
3.8 docker 的删除
有时候我们平凡使用docker,他会有停止的镜像占用我们的资源,或者有的镜像我们不需要了,就需要清除干净。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 查看运行中的镜像
user@ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
835b42d983dd ubuntu_2.1 "/bin/bash" 5 seconds ago Up 3 seconds keen_sammet
# 停止镜像
user@ubuntu:~$ sudo docker stop 835b42d983dd
835b42d983dd
# 删除镜像
user@ubuntu:~$ sudo docker rm 835b42d983dd
835b42d983dd
|
1
2
3
4
5
|
# 关闭所有运行中的docker
sudo docker stop $(sudo docker ps -a -q)
# 删除所有占用的容器
sudo docker rm $(sudo docker ps -a -q)
|
1
2
3
4
5
6
7
8
9
10
11
|
# 查看镜像
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 27941809078c 2 weeks ago 77.8MB
# 删除镜像 可用全量停止、全量删除使用的镜像
docker rmi 27941809078c
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:34fea4f31bf187bc915536831fd0afc9d214755bf700b5cdb1336c82516d154e
Deleted: sha256:df5de72bdb3b711aba4eca685b1f42c722cc8a1837ed3fbd548a9282af2d836d
Deleted: sha256:629d9dbab5edeac7fa51f205839d7f9bb629a5e83548da3a183fb66c22fe7af7
|