如何向Azure虚拟机传文件
发布网友
发布时间:2022-04-20 09:22
我来回答
共1个回答
热心网友
时间:2023-09-06 14:24
1.通过远程桌面的本地资源访问
最简单的方式是通过远程桌面的本地资源访问功能。在虚拟机页底部点击“连接”后,浏览器会提示下载rdp文件。
不要直接打开该文件,而是选择另存,将其存在本地
对于下载的RDP文件,不要直接打开,而是右键,选择Edit
然后在本地资源页中,点击More,然后选中本地要访问的磁盘
这样登录虚拟机后,就可以在资源管理器里面看到本地磁盘,直接进行文件拷贝。
这种访问最方便,不过缺点是受网络影响较大。如果文件较大或者较多,效率比较低
2. 通过Blob存储中转
Azure存储提供了近乎无限的存储空间,我们可以把要上传的文件先上传到Blob存储,然后再从Azure的各虚拟机下载
Blob的上传下载需要Blob工具,比如Azure Storage Explorer, CloudXplorer等,具体可参考http://blog.csdn.net/shaunfang/article/details/8647557
在本地和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/vsftpd.conf末尾添加
pasv_min_port=30000
pasv_max_port=30001
表示数据端口采用30000-30001,重启ftp服务
然后进入Azure门户,为这两个端口定义防火墙映射
再次使用ftp客户端连接
工作正常了!可见客户端正是用30001访问服务器端数据端口