Linux(九) Linux的远程访问(Virtualbox 虚
一、SSH及OpenSSH
在很多情况下,Linux都作为服务器使用;使用者通常采用远程访问,而非直接操作服务器的方式。而Linux的远程访问一般是通过SSH
(secure shell)协议,SSH
协议可以提供“加密通讯”、“身份验证”、“远程登录”及“文件传输”等能力;是一种基于命令行的远程控制协议。
对SSH
协议进行实现的软件,是OpenSSH
。OpenSSH
在Ubuntu
上的安装,可以使用命令:sudo apt install openssh-server -y
安装完成后,使用sudo systemctl status ssh
检查SSH
服务状态。
二、远程连接
当我们需要连接到一个Linux时,我们需要知道其IP
地址,可供连接的端口号(port)
,用户名及密码。
默认情况下,ssh
的端口号为22
。当我们在Ubuntu
上安装完成openssh-server
后,就可以在Windows 11
上使用ssh
命令来连接Ubuntu
了,其命令格式为:
ssh <username>@<hostname_or_ip>
2.1 通过用户名、密码远程连接 VirtualBox 虚拟机
我们只进行宿主机与VirtualBox虚拟机之间的远程连接,这里使用VirtualBox网络的Host-Only
模式。
-
关闭虚拟机,打开虚拟机设置菜单,在
设置网络网络
选项卡中,选择网络2
,选择启用网络连接
,之后选择Host-Only
连接方式。
-
确认后,开启虚拟机,使用
ubuntu的IP地址ifconfig
指令查看网络信息
-
在
Windows 11
上,使用ping
命令测试IP地址是否可连接
IP测试ping 192.168.56.101
-
在
Windows 11
上,使用ssh
命令连接VirtualBox
中的Ubuntu
系统。我的用户名是ubuntu
,虚拟机的IP地址是192.168.56.101
。所以此处我使用的命令是
远程连接ssh ubuntu@192.168.56.101
-
使用组合键
退出远程连接Ctrl + D
或输入exit
;退出远程连接。
2.2 远程文件传输
完成上面远程连接步骤后,我们依然可以基于SSH
,在Windows 11
和 Ubuntu
之间进行文件传输。指令的格式是:
scp [要上传的文件] <username>@<host>:<上传到的目录> [要下载到的文件夹]
上传和下载的命令是非常相似的,如果是上传,则需要指定要上传的文件。如果下载,则需要在host:
后面指定要下载的文件,指定要下载到的目录。比如:
-
要将
Windows 11
中D:/cache.db
上传到ubuntu
的/tmp
目录下;依然如上面所说,我的用户名是ubuntu
,虚拟机的IP地址是192.168.56.101
。所以,我运行的命令是
上传scp d:/cache.db ubuntu@192.168.56.101:/tmp
在
查看上传的文件ubuntu
虚拟机里查看,可以看到上传的文件
由于文件夹权限问题,如果直接上传到正式文件夹里,有时会权限不足。上传到 /tmp 目录会更稳妥
-
要将
ubuntu
中的/home/ubuntu/new_sh.sh
文件下载到windows 11
的d:/scp_download
文件夹中,命令则是
下载scp ubuntu@192.168.56.101:/home/ubuntu/new_sh.sh d:/scp_download
- 配合匹配指令,可以实现批量的下载和上传,比如要把
ubuntu
的目录/home/ubuntu/
下,所有以.sh
结尾的文件都下载到Windows 11
的d:/scp_download
中,则可以运行指令
批量下载scp ubuntu@192.168.56.101:/home/ubuntu/*.sh d:/scp_download
2.3 使用密钥进行远程连接
在2.1
中,我们使用用户名和密码进行了远程连接,这种连接方式,每次都需要手动输入密码,不仅麻烦,而且不利于某些自动执行脚本程序的无人化执行。我们可以采用密钥的方式进行远程连接,当配置完成后,后续无需输入密码,即可访问远程电脑。
-
在
Windows 11
中,生成ssh
远程连接使用的密钥。在这里,我们使用一种非对称加密方式(rsa)生成密钥对ssh-keygen -t rsa -b 2048
其中,
生成密钥-t
指定了加密算法为rsa
;-b
制定了密钥长度为2048
。密钥默认保存在c:\users\<用户名>\.ssh\
文件夹下,分为两个:公钥和私钥。公钥名称为id_rsa.pub
。
-
将
公钥
上传到远程ubuntu
系统,保存到~/.ssh/authorized_keys
中,注意authorized_keys
是文件名,而不是目录。
在Windows 11
中执行指令,并输入ubuntu密码,将公钥上传到ubuntu
的/tmp
文件夹
上传公钥scp C:\Users\xxx/.ssh/id_rsa.pub ubuntu@192.168.56.101:/tmp
在
ubuntu
中,运行以下指令,将上传的公钥文件移动到指定目录的指令文件
移动文件 查看移动成功的文件mv /tmp/id_rsa.pub /home/ubuntu/.ssh/authorized_keys
-
现在,可以在
Windows 11
中,通过密钥进行远程连接了,运行如下指令可直接连接上远程服务器
密钥连接ssh ubuntu@192.168.56.101
-
scp
文件传输指令,也可以使用密钥,比如,再次运行前面提到的上传指令,已经不需要经过输入密码的过程了
密钥上传scp d:/cache.db ubuntu@192.168.56.101:/tmp