一、SSH及OpenSSH
在很多情况下,Linux都作为服务器使用;使用者通常采用远程访问,而非直接操作服务器的方式。而Linux的远程访问一般是通过SSH(secure shell)协议,SSH协议可以提供“加密通讯”、“身份验证”、“远程登录”及“文件传输”等能力;是一种基于命令行的远程控制协议。
对SSH协议进行实现的软件,是OpenSSH。OpenSSH在Ubuntu上的安装,可以使用命令:sudo apt install openssh-server -y
openssh安装
安装完成后,使用sudo systemctl status ssh检查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连接方式。
设置网络
-
确认后,开启虚拟机,使用
ifconfig指令查看网络信息
ubuntu的IP地址
-
在
Windows 11上,使用ping命令测试IP地址是否可连接ping 192.168.56.101
IP测试
-
在
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
密钥上传












网友评论