前言:
本人在做这次实验参考相关文章的时候,发现目前网上在windows下进行相关实验的文章比较少,而且大多数文章都比较零零散散,所以最最后后决定自己写一篇相关教程(这也是本人第一次尝试写教程,若有什么表述或者操作不太正确的地方还请体谅~!爱你们!)
一、实验任务
- 使用docker安装centos(可以使用其他linux版本)
- 在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的默认下载路径可以看这里
可以看到两个文件已经成功下载到本地主机
有什么问题或者错误的地方可以评论区留言~~~