尝试啦很多中办法,最终选择以在QEMU模拟器中ssh 远程登入的方式访问主机,并用sshfs 挂载 主机端的文件到模拟器中,实现模拟器访问主机端的代码。
SSH分客户端openssh-client和openssh-server
如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo
apt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server
sudo apt-get install openssh-server
这里我们在ubuntu 主机端安装openssh-server, 在QEMU 模拟器端安装openshh-client.
然后在主机端确认sshserver是否启动了:
ps -e |grep ssh
如果看到sshd那说明ssh-server已经启动了。
如果没有则可以这样启动:sudo /etc/init.d/ssh start 或者 service ssh start
ssh-server配置文件位于/etc/ssh/sshd_config,在这里可以定义SSH的服务端口,默认端口是22,你可以自己定义成其他端口号,如222。
然后重启SSH服务:
sudo
/etc/init.d/ssh stop
sudo /etc/init.d/ssh start
然后使用以下方式登陆SSH:
ssh [email protected] username为192.168.1.112 机器上的用户,需要输入登入密码
但是我们在QEMU模拟器中不能用这个ip地址,而是改成10.0.2.2,也就是 ssh [email protected], 然后输入密码
这个时候模拟器中的终端会提示“welcome to .....”表示登入成功,且可以访问到远程的所有目录。但是我们的模拟器只有一个窗口,只能访问主机端的内容,并不能拷贝主机端的内容,下面是如何在模拟器端拷贝主机端的内容,有两种方法
先执行exit 退出ssh登入。
1. scp [email protected]:/home/username/work/training/test/test2.cpp ./ 拷贝主机端的test2.cpp到当前文件夹。还有第二种方法更方便
2. 在QEMU模拟器端"apt-get install sshfs" 安装ssfs, 这个就是用来mount 主机端的内容到作为本地的一个文件夹进行访问,然后执行:
在当前目录先新建一个文件夹mnt作为mount的位置, mkdir mnt
然后 sshfs [email protected]:/home/test/ ./mnt/
输入密码成功后,主机端/home/test/目录就挂在QEMU模拟器中的./mnt/目录下面,可以直接当作本地文件进行访问。
退出挂载执行: fusermount -u ./mnt(这个是mnt的路径) ,则取消挂在,这个时候用ls -l 查看发现没有文件。