本篇博客是在做嵌入式系统应用实验中的收获。
主要步骤分为以下几点:安装SSH服务——在宿主机上连接PuTTy(保证宿主机和虚拟机之间是可连通的)——进入宿主机的命令提示符——输入相应指令进行文件或者文件夹的互传。接下来会给每一个步骤分别具体讲述。
一、安装SSH服务
1.打开虚拟机,进入终端,在终端中输入以下指令:
sudo apt update
sudo apt install openssh-server
2.使用文本编辑器打开SSH服务器的配置文件/etc/ssh/sshd_config,输入以下指令SSH配置文件:
sudo nano /etc/ssh/sshd_config
3.在刚才打开的配置文件中作出以下两处修改
4.重启SSH服务,执行以下命令以重新加载SSH服务器配置并使更改生效:
sudo systemctl restart sshd
5.执行以下指令,切换到root用户并设置密码(Putty中需要允许root用户登录)
sudo su -
Passwd
二、利用PuTTy连接宿主机和虚拟机
1.在终端中输入以下指令,查看虚拟机网关:ifconfig
2.打开安装好的Putty.exe,在IP Address中输入刚才得到的虚拟机网关后点击open
(这里需要注意!我用到的PuTTY不是单独的exe文件,而是包含pscp的,下载安装的是PuTTY的整个msi文件压缩包。因为PuTTY本身只能作为宿主机的虚拟机的连通桥梁,真正传输文件的是pscp,而且这两个文件必须在同一个目录下,才能在命令行下面运行!!)
3.输入用户名root和自定义密码,连接成功得到结果
三、在宿主机命令提示符下进行单个文件传输指令操作
1.再次确保SSH服务已经安装并启动
sudo systemctl start ssh
sudo systemctl status ssh
2.打开命令行,在dos界面下切换到PuTTY的安装目录(这里我直接将PuTTY安装在D盘底下)
3.进入到PuTTy目录下后就可以开始进行文件传输
若想把文件从Windows上传到Ubuntu(这里用test.txt做实例,内容为Hello 20250409),输入指令:pscp 需要传输的文件路径地址 root@虚拟机IP:传输到虚拟机后想要保存的地址,例如pscp D:\test.txt root@192.168.137.130:/home/wengll,回车后输入虚拟机端root密码,在Dos界面成功显示传输的相关信息,100%表示已经成功将test.txt从Windows上传到Ubuntu。回到Ubuntu中查看目录,发现test.txt已经在根目录下,打开test.txt的内容,与在Windows上显示的一致。
若想将文件从虚拟机传输给宿主机道理也是类似的,只需要把上面指令中虚拟机和宿主机的地址换个位置即可,这里不过多赘述。
四、在宿主机命令提示符下进行整个文件夹传输指令操作
请注意,我上面所提到的pscp默认只能用于单个文件传输,但可以通过使用-r参数来递归地上传或下载整个文件夹目录
若想把文件夹【testfile】从Windows上传到Ubuntu,输入指令:pscp -r 整个文件夹在电脑上的路径 root@虚拟机IP:想要传输到的虚拟机地址,例如pscp -r C:\Users\生瓜蛋子\Desktop\testfile root@192.168.137.130:/home/wengll,回车后输入虚拟机端root密码,在Dos界面成功显示传输的相关信息,100%表示已经成功将文件夹中的所有文件从Windows上传到Ubuntu。回到Ubuntu中查看目录,发现testfile已经在根目录下,打开testfile的内容,与在Windows上显示的一致。
五、学习小结
1.遇到的问题及解决
①Ubuntu本地并没有配置vim编辑器,修改vim文件需要自己下载编辑器(其实用nano也可以,但是我个人觉得vim更好用一些);
②在配置文件中将PermitRootLogin更改为yes后,PuTTY运行显示Access denied,表示访问被拒绝,后来发现vim中的端口22没有打开,将Port 22端口注释去掉之后,PuTTy显示能够正确访问,运行成功。
③实现虚拟机和宿主机的文件共享必须要事先打开PuTTY连通两台机器,下载PSCP,通过Dos命令行转至PuTTY对应的文件夹下面才能运行实现,否则会出现Fatal访问拒绝错误提示。
2.体会和收获
其实在计算机信息安全的实验中就有实验过操作机和目标机在Telnet上进行测试联通,但是因为机房的电脑是Win10系统,我的电脑是Win11系统,而Telnet服务端只能在Win7及以下系统正常运行,所以在计算机信息安全中没能实现两台机器的文件共享;但是在本次实验中,通过对虚拟机工具上Ubuntu系统的使用、sshd服务设置、ssh客户端Putty的使用,最后能够成功实现传输文件,让我对Linux系统指令以及主机和虚拟机之间的文件传输的过程有了新的理解,真的很大程度上提高了我对虚拟机的动手操作能力,也证明了人的求知欲被激发之后是能够做出本来做不出的事情的。接下来我会更加深入学习Ubuntu系统,并将这些技巧应用到更加复杂的问题中,以不断提高自己的编程水平和解决问题的能力。