Bootstrap

windows下 使用docker安装centos/ubuntu,并在linux系统上搭建sftp服务,并且通过ssh进行远程访问,上传下载文件

前言:

本人在做这次实验参考相关文章的时候,发现目前网上在windows下进行相关实验的文章比较少,而且大多数文章都比较零零散散,所以最最后后决定自己写一篇相关教程(这也是本人第一次尝试写教程,若有什么表述或者操作不太正确的地方还请体谅~!爱你们!)

一、实验任务

  1. 使用docker安装centos(可以使用其他linux版本)
  2. linux系统上搭建sftp服务,并且通过ssh进行远程访问下载。

二、实验内容

      使用docker安装centos(可以使用其他linux版本)并linux系统上搭建sftp服务,并且通过ssh进行远程访问下载。

三、实验步骤

使用docker安装centos(可以使用其他linux版本)

1、安装好docker桌面版

还没安装的同学可以去搜一下docker桌面班如何下载安装,网上有很多教程,这里不过多赘述

2、添加镜像源(方便后续的一些下载操作)

不会换源的同学可以去搜一下docker桌面版如何换源,网上有很多教程,这里不过多赘述

3、拉取镜像,这里我选择的是ubuntu的镜像(情况可能需要梯子才能拉取成功)

#这里我用的是ubuntu桌面版,根据自己需求来拉取对应镜像
docker pull dorowu/ubuntu-desktop-lxde-vnc

 或者

docker pull ubuntu

4、拉取镜像成功后查看已下载镜像

docker images

这里我们需要特别留意 IMAGE ID 这个id(后面会用到)

5、根据镜像创建容器(提前做好端口映射)

docker run --name my_container -dit -p 22222:22  my_image:tag /bin/bash

(注意:my_container是容器名称,可以自己起一个;my_image:tag是是要使用的镜像名称和标签,也可以用上面提到的MAGE ID代替)

创建后docker界面会出现一个新的容器

6、进入容器控制台(两种方法)

方法一:

方法二:

Cmd打开控制台,输入

docker exec -it 容器id或容器名称 /bin/bash

也可以进入容器控制台

7、进入容器后,由于很多工具可能没有,所以我们需要逐一下载这些工具

sudo apt update  #先更新

sudo apt install iputils-ping   # ping工具

sudo apt install net-tools   # 下载后可以使用ifconfig查看自己容器ip

sudo apt install vim  # vim编辑器

sudo apt install openssh-client  # ssh  连接其他服务器ssh

sudo apt install openssh-server  # 其他服务器连接本机ssh

sudo apt install vsftpd  # ftp

在linux系统上搭建sftp服务,并且通过ssh进行远程访问下载。

1、先修改root密码

passwd

2、安装ssh

上面已经安装了的这里就不用再安装一次

apt install openssh-server -y

3、下载防火墙

apt install ufw -y

4、放通22端口

Ufw allow 22

5、启动ssh服务

 service shh start

6、配置sftp服务

创建一个组sftp

addgroup sftp

7、创建用户lb

useradd lb #lb是用户名,可以自己起名字

8、设置密码

passwd lb

9、要将用户“lb”移动到“sftp”组

usermod -a -G sftp lb

10、创建文件目录传输文件

使用 mkdir 命令创建一个“Document”目录,并允许root识别/var/sftp所有者

mkdir -p /var/sftp/Document
chown root:root /var/sftp

11、将该目录的写入权限授予同一目录,并允许其他用户只读:

chmod 755 /var/sftp

现在将文档的权限授予用户 lb

chown lb:lb /var/sftp/Document

12、配置SSH守护进程

将用户 lb 限制为目录 /var/sftp,并且其他用户都无法访问该目录。

vi /etc/ssh/sshd_config

文件打开后,按i进行编辑,在其中键入以下文本:

Match User lb   #这里的lb填自己用户名

     ChrootDirectory /var/sftp

     X11Forwarding no

     AllowTcpForwarding no

     ForceCommand internal-sftp

打开文件后,在底部将看到文本“Subsystem sftp /usr/lib/openssh/sftp-server ”,将以上写入此行之后。

然后再寻找到  #PermitRootLogin prohibit-password  这段代码,在其下一行添加

PermitRootLogin yes

结束退出先按esc,然后输入:wq,再按enter退出

13、重新启动ssh服务

service ssh restart

或者

service ssh start

14、使用Xshell软件通过ssh远程连接上容器

后面检验发现22222端口不用去放通也行

点击连接

通过ssh成功远程连接上我们的linux容器

连接sftp服务,172.17.0.3为linux容器ip地址(可以先通过ifconfig命令查看)

现在准备从本地上传文件到sftp服务器,再从sftp服务器下载文件到本地

有两种方法,没有软件xftp和有xftp

有xftp的情况

Xshell中点击“新建文件传输”

这时应该会跳转到一个新界面

然后直接拖动你要上传到容器的文件就行

可以在对应目录下查看是否已经传输成功

同理,从sftp下载文件到本地也是直接拖动就行

没有xftp的情况

Xshell中点击“新建文件传输”

跳转到一个新界面

然后先在容器创建一个test目录

mkdir /test

切换到test目录,从本地c盘上传test1.txt和test2.txt文件到容器的test目录里(提前在本地电脑创建好要传输的.txt文件,路径中不要有中文尽量)

cd /test
put 文件路径

上传后在容器的test目录里查看两个文件是否已经上传成功

从sftp服务器下载文件到本地

get  /test/test1.txt   # get 文件路径

然后到Xshell默认的下载路径查看是否下载成功

Xshell的默认下载路径可以看这里

可以看到两个文件已经成功下载到本地主机

有什么问题或者错误的地方可以评论区留言~~~

;