如何向Azure虚拟机传文件
1通过远程桌面的本地资源访问
最简单的方式是通过远程桌面的本地资源访问功能。在虚拟机页底部点击“连接”后,浏览器会提示下载rdp文件。
不要直接打开该文件,而是选择另存,将其存在本地
对于下载的RDP文件,不要直接打开,而是右键,选择Edit
然后在本地资源页中,点击More,然后选中本地要访问的磁盘
这样登录虚拟机后,就可以在资源管理器里面看到本地磁盘,直接进行文件拷贝。
这种访问最方便,不过缺点是受网络影响较大。如果文件较大或者较多,效率比较低
2 通过Blob存储中转
Azure存储提供了近乎无限的存储空间,我们可以把要上传的文件先上传到Blob存储,然后再从Azure的各虚拟机下载
Blob的上传下载需要Blob工具,比如Azure Storage Explorer, CloudXplorer等
在本地和Azure虚拟机上,都需要安装这个工具
3 通过FTP
用FTP看似是个好主意,大家都会用。但这里存在一个问题,就是Azure的安全设计。Azure的虚拟机全部位于防火墙后,所有的外部访问均需事先定义端口映射。对于通常的Web访问来说,不是什么问题,因为我们会打开80端口。但是FTP就有点麻烦了。
首先,我们需要了解下FTP的工作原理。FTP基于两个端口运作,21端口是命令端口,用于接受客户连接,此外还有一个端口专门用于传数据。这个端口的确定有两种方式,分别是Passive和Active。其中Active的意思是,客户端主动监听一个端口,然后让服务器反向连接至该端口进行数据传递。这对于大部分场景不可用,因为客户端往往在内网,内网开的端口外网是访问不了的。于是FTP缺省用Passive模式,即服务器随机开一个端口,告诉客户端,然后让客户端连接至该端口传数据。由于这个端口是随机创建的,自然无法在Azure上提前定义端口映射,FTP也就无法运作了。
那么是不是FTP就没法用了?也不是。FTP服务器都支持指定数据端口范围,如果我们限定数据端口在一个很小的范围内,比如30000-30004,然后我们在Azure上把这些端口都定义了,那么就可以解决FTP的防火墙穿越问题。
下面我们实际测试下,首先我们在一台CentOS上配置VsFtp服务,并在Azure上定义21端口,再用FTP客户端访问
我们发现FTP试图连接一个服务器随机创建的端口50118,该端口没有在Azure防火墙上定义,自然无法连通。
接下来,我们修改vsftp配置,在/etc/vsftpd/vsftpdconf末尾添加
pasv_min_port=30000
pasv_max_port=30001
表示数据端口采用30000-30001,重启ftp服务
然后进入Azure门户,为这两个端口定义防火墙映射
再次使用ftp客户端连接
工作正常了!可见客户端正是用30001访问服务器端数据端口
如下21端口改成你的端口号 注意设置SELinux 或者关闭SELinux
firewall-cmd --permanent --zone=public --add-port=21/tcp
然后执行重新载入firewalld设置
firewall-cmd --reload
删除之前的服务
firewall-cmd --permanent --remove-server=tcp
列出firewall开放端口
firewall-cmd --list-all
iptables里面仅仅开放了80、21等常用端口,这样就导致了vsFTPd在被动模式时无法使用随机端口,从而造成了客户端连接FTP时无法列出目录这样的问题。解决方式很简单,给vsFTPd增加随机端口的范围,然后把这个端口范围添加到iptables。给vsFTPd增加随机端口的范围,然后把这个端口范围添加到iptables就可以解决vsftpd不能显示文件目录的问题。
搭建虚拟主机管理系统可以通过以下步骤完成:
1 安装服务器操作系统:选择一种适用于服务器的操作系统,如Linux发行版(例如Ubuntu、CentOS)或Windows Server。安装操作系统时,确保选择服务器版本,并进行基本的初始化设置。
2 安装Web服务器软件:常见的Web服务器软件有Apache和Nginx。选择其中一种并按照所选软件的官方文档进行安装。
3 安装数据库服务器:虚拟主机管理系统需要使用数据库来存储用户和站点的信息。常见的数据库软件有MySQL和PostgreSQL。选择其中一种并按照所选软件的官方文档进行安装。
4 配置Web服务器:根据所选择的Web服务器,编辑相关配置文件以启用必要的模块和功能。例如,在Apache中,您可以编辑httpdconf文件;在Nginx中,您可以编辑nginxconf文件。
5 下载和安装虚拟主机管理系统:有许多开源的虚拟主机管理系统可供选择,例如cPanel、Plesk、Virtualmin等。根据您的需求和偏好选择一个系统,并按照其官方文档进行下载和安装。
6 配置虚拟主机管理系统:安装完成后,您需要进行一些必要的配置。这可能包括设置管理员账户、配置DNS服务器、设置邮件服务、定义资源配额等。
7 创建虚拟主机:在虚拟主机管理系统中,您可以创建和管理虚拟主机。根据系统的不同,您可以设置域名、FTP账号、数据库等。
8 安全配置:确保服务器和虚拟主机管理系统的安全性,例如使用防火墙、更新软件、实施访问控制策略等。
9 监控和维护:定期监控服务器和虚拟主机管理系统的性能和安全状态。确保及时进行软件更新、备份数据、检查日志等。
请注意,搭建虚拟主机管理系统需要一定的技术知识和经验。如果您是初学者或对服务器管理不熟悉,建议寻求专业人士的帮助或选择使用托管服务提供商。
在我用的所有ftp服务器中来说,首推iis7服务器管理工具,而且一直在用,感觉非常好。它可以作为FTP的客户端,想要进行FTP的上传下载操作,只需要下载安装iis7服务器管理工具就可以了,操作不复杂!
简单的介绍一下iis7服务器管理工具:可以批量管理WIN系列服务器、VPS、批量导入服务器VPS的IP,端口,账号和密码 、批量打开N个服务器VPS的远程桌面、远程桌面后,远程窗口右上角会出现 服务器备注的信息,如郑州xxx号服务器 5、远程桌面后,不影响任务栏显示。可以及时看其他窗口。支持多种方式连接,操作简洁,自身附带教程。
第一步:点击主程序图中“上传下载”键;
第二步:点击“ Ftp”;
第三步:点击“添加”;
第四步:在弹出服务器信息框中填写Ftp信息,注意:FIP ip端口、账号、密码为必填项;
第五步:选择需要打开的FTP服务器;
第六步:点击打开,即刻见FTP效果图。
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。
工作方式
主动模式:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始 监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
被动模式:当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
先安装vsftpd
[root@localhost ~]# yum install vsftpd -y[root@localhost ~]# systemctl start vsftpd #启动vsftpd[root@localhost ~]# systemctl status vsftpd #查看vsftpd状态
vsftpdservice - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpdservice; disabled; vendor preset: disabled)
Active: active (running) since 五 2018-02-02 08:22:39 CST; 1min 50s ago
Process: 12558 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpdconf (code=exited, status=0/SUCCESS)
Main PID: 12559 (vsftpd)
CGroup: /systemslice/vsftpdservice
└─12559 /usr/sbin/vsftpd /etc/vsftpd/vsftpdconf
vsftp三种认证模式
annoymous 匿名用户 #无虚输入密码即可访问
local user 真实用户 #服务器上存在的用户
guest user 虚拟用户 #映射到ftp服务器的用户
vsftpd的默认配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpdconf
# Allow anonymous FTP (Beware - allowed by default if you comment this out)anonymous_enable=YES #允许匿名用户登陆## Uncomment this to allow local users to log in# When SELinux is enforcing check for SE bool ftp_home_dirlocal_enable=YES #允许本地用户登陆## Uncomment this to enable any form of FTP write commandwrite_enable=YES #允许本地用户读写## Default umask for local users is 077 You may wish to change this to 022,# if your users expect that (022 is used by most other ftpd's)local_umask=022 #本地用户创建文件的umask值
dirmessage_enable=YES #当用户进入某个目录时,会显示该目录需要注意的内容是 messagexferlog_enable=YES #启动维护记录服务器上传和下载情况的日志文件connect_from_port_20=YES #FTP PORT主动模式进行数据传输时使用20端口xferlog_std_format=YES #传输日志文件将以标准 xferlog 的格式书写listen_ipv6=YES #监听ipv6pam_service_name=vsftpd #pam认证模块的名字userlist_enable=YES #拒绝登陆ftp的名单tcp_wrappers=YES #限制IP访问vsftpd
匿名用户认证
我们刚才已经开启了vsftpd 我们已经可以登陆ftp站点 #需关闭防火墙或设置规则 并关闭selinux
我们已经登陆到ftp站点了
试着创建一个文件夹 出现550报错 是因为我们是以匿名用户登陆到FTP站点 并没有给匿名用户创建目录的权限
在vsftpd配置文件中添加
anon_upload_enbale #允许匿名用户上传anon_mkdir_write_enable=yes #允许匿名用户创建目录anon_other_write_enable=yes #允许匿名用户修改目录名称或删除目录
再赋予匿名用户登陆的文件夹最高权限
chmod 777 /var/ftp/pub
已经可以创建并修改文件夹
还有一种方法 是将匿名用户登陆到的目录系统用户改成ftp 就不用修改目录权限
[root@localhost ~]#chown -Rf ftp /var/ftp/pub
本地用户模式
修改vsftp配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpdconf
加入一行
local_root=/etc/ftp
创建 一个用户
[root@localhost ~]#useradd 51cto[root@localhost ~]# passwd 51cto更改用户 51cto 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
创建这个目录
[root@localhost ~]#mkdir /etc/ftp
重启一下vsftpd
用我们刚创建的用户登陆
登陆成功
诶? 既然说本地用户模式是 服务器上真是存在的用户 那我们的管理员root 也是真实存在的 那是否可以登陆呢?
无法登陆 这是为什么呢?
这是因为vsftpd有一个禁止用户登陆的名单
在上面的匿名用户说过 vsftpd默认是开启禁止用户名单的 我们的root用户在名单之中 自然就无法登陆了 禁止root用户登陆也对服务器提升了安全性 防止通过ftp爆破root密码
虚拟用户
虚拟用户是这三种认证模式中最安全的一种 也稍微复杂一些
虚拟用户是用PAM认证模块中配置 FTP认证的数据库文件来进行加密
关于PAM认证可以看http://blog51ctocom/tyjhz/1436175
首先我们在/etc/目录下 创立一个用户数据库文件
奇数行为账户偶数行为密码
为了安全我们用db_load命令 用哈希算法将明文信息转换成密文数据库文件并降低文件的权限 避免其他人看到数据库文件
[root@localhost etc]#db_load -T -t hash -f /etc/ftp/ftptxt ftpdb[root@localhost etc]#rm ftptxt[root@localhost etc]#chmod 600 ftpdb
我们用默认的pam文件 注释其他行
新加两行
db_load 后面跟的是数据库的路径不用写数据库的后缀
创建存放虚拟用户配置文件的目录
[root@localhost etc]#mdir -p /etc/ftp
配置虚拟用户权限
[root@localhost ftp]#vim user1
[root@localhost ftp]#vim user2
创建两个用户登陆的目录
[root@localhost ftp]#mkdir -p /home/user1 [root@localhost ftp]#mkdir -p /home/user2赋予最高权限
[root@localhost ftp]#chmod 777 /home/
修改vsftpd配置文件
重启一下vsftpd
测试一下权限
给你访问目录下面的文件夹授权,命令如下:
chomd -R 755 文件夹路径 或者chomd -R 777 文件夹路径
如果你安装了SELinux,建议关闭;
解决方法:
//使用setsebool命令开启
# setsebool ftpd_disable_trans 1
或者
# setsebool ftp_home_dir 1
//再次查看当前状态是否是on的状态
# getsebool -a|grep ftp
ftpd_disable_trans --> on
或者
ftp_home_dir-->on
//setsebool使用-P参数,无需每次开机都输入这个命令
# setsebool -P ftpd_disable_trans 1
或者
# setsebool -P ftp_home_dir 1
# service vsftpd restart
0条评论