Ubuntu 22.04的远程登录
6.1 快速上手:搭建实验环境
6.1.1 物理网络 vs 虚拟机
- 物理网络:真实硬件组成的网络,适合生产环境(如企业服务器)。
- 虚拟机:通过软件模拟的虚拟环境(如 VMware、VirtualBox),适合开发和测试(隔离环境、易于克隆)。
6.1.2 安装 OpenSSH
OpenSSH 是 Linux 下标准的安全远程登录协议,用于加密通信。
安装步骤
sudoaptupdate# 更新软件源sudoaptinstallopenssh-server# 安装 SSH 服务sudosystemctl startssh# 启动 SSH 服务sudosystemctlenablessh# 设置开机自启bigdata@bigdata-virtual-machine:~$sudoaptinstallopenssh-server[sudo]bigdata 的密码: 正在读取软件包列表... 完成 正在分析软件包的依赖关系树... 完成 正在读取状态信息... 完成 将会同时安装下列软件: ncurses-term openssh-sftp-server ssh-import-id 建议安装: molly-guard monkeysphere ssh-askpass 下列【新】软件包将被安装: ncurses-term openssh-server openssh-sftp-server ssh-import-id 升级了0个软件包,新安装了4个软件包,要卸载0个软件包,有9个软件包未被升级。 需要下载751kB 的归档。 解压缩后会消耗6,050kB 的额外空间。 您希望继续执行吗?[Y/n]y 获取:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates/main amd64 openssh-sftp-server amd641:8.9p1-3ubuntu0.13[38.7kB]获取:2 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates/main amd64 openssh-server amd641:8.9p1-3ubuntu0.13[435kB]获取:3 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy-updates/main amd64 ncurses-term all6.3-2ubuntu0.1[267kB]获取:4 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy/main amd64 ssh-import-id all5.11-0ubuntu1[10.1kB]已下载751kB,耗时2秒(489kB/s)正在预设定软件包... 正在选中未选择的软件包 openssh-sftp-server。(正在读取数据库... 系统当前共安装有208935个文件和目录。)准备解压.../openssh-sftp-server_1%3a8.9p1-3ubuntu0.13_amd64.deb... 正在解压 openssh-sftp-server(1:8.9p1-3ubuntu0.13)... 正在选中未选择的软件包 openssh-server。 准备解压.../openssh-server_1%3a8.9p1-3ubuntu0.13_amd64.deb... 正在解压 openssh-server(1:8.9p1-3ubuntu0.13)... 正在选中未选择的软件包 ncurses-term。 准备解压.../ncurses-term_6.3-2ubuntu0.1_all.deb... 正在解压 ncurses-term(6.3-2ubuntu0.1)... 正在选中未选择的软件包 ssh-import-id。 准备解压.../ssh-import-id_5.11-0ubuntu1_all.deb... 正在解压 ssh-import-id(5.11-0ubuntu1)... 正在设置 openssh-sftp-server(1:8.9p1-3ubuntu0.13)... 正在设置 openssh-server(1:8.9p1-3ubuntu0.13)... Creating configfile/etc/ssh/sshd_config with new version Creating SSH2 RSA key;this may take sometime...3072SHA256:onfG1zUQon0a25Xnvjeebv9VQfR2rMu2w7gzbJkrkos root@bigdata-virtual-machine(RSA)Creating SSH2 ECDSA key;this may take sometime...256SHA256:q7zoMGKG7GsN9t2NhCWcGGtahSTi4oyn7QhnsBqg+Q4 root@bigdata-virtual-machine(ECDSA)Creating SSH2 ED25519 key;this may take sometime...256SHA256:iU8dirsuwgQwPJO1jbJH++KA3raYgpp7MV/i45TPVhA root@bigdata-virtual-machine(ED25519)Created symlink /etc/systemd/system/sshd.service → /lib/systemd/system/ssh.service. Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service. rescue-ssh.target is a disabled or a static unit, not starting it. ssh.socket is a disabled or a static unit, not starting it. 正在设置 ssh-import-id(5.11-0ubuntu1)... 正在设置 ncurses-term(6.3-2ubuntu0.1)... 正在处理用于 man-db(2.10.2-1)的触发器... 正在处理用于 ufw(0.36.1-4ubuntu0.1)的触发器... bigdata@bigdata-virtual-machine:~$ bigdata@bigdata-virtual-machine:~$sudosystemctl startssh# 启动 SSH 服务bigdata@bigdata-virtual-machine:~$sudosystemctlenablesshSynchronizing state of ssh.service with SysVservicescript with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-installenablessh配置文件(/etc/ssh/sshd_config)
关键配置项(需重启 SSH 服务生效):
# 允许 root 登录(默认禁止,建议保留禁止)PermitRootLogin no# 允许密码认证(生产环境建议禁用,改用密钥认证)PasswordAuthenticationyes# 监听端口(默认 22,可修改为其他端口增强安全性)Port226.1.3 安装 TightVNC(图形化远程桌面)
TightVNC 是轻量级远程桌面软件,支持跨平台(Linux/Windows)。
安装步骤
sudoaptinstalltightvncserver# 安装 VNC 服务器配置 VNC 密码
首次运行时会提示设置密码(用于客户端连接验证):
vncserver :1# 启动 VNC 服务(:1 表示第一个桌面)防火墙配置(允许 VNC 端口)
sudoufw allow5901/tcp# 允许 VNC 端口(5900 + 桌面编号,如 :1 对应 5901)sudoufw reload# 重载防火墙规则6.2 安全的 Shell:SSH
6.2.1 为什么不使用 Telnet?
Telnet 采用明文传输(包括密码),容易被窃听;而 SSH 通过加密通道传输数据,安全性更高。
6.2.2 从 Linux 登录另一台 Linux 服务器
基础用法
sshusername@remote_ip# 远程登录(如 ssh ubuntu@192.168.1.100)配置文件(~/.ssh/config)
简化频繁登录的主机配置:
# 创建配置文件nano~/.ssh/config# 添加主机别名(示例)Host server1 HostName192.168.1.100 User ubuntu Port22之后可通过ssh server1快速登录。
6.2.3 从 Windows 登录 Linux
推荐使用图形化 SSH 工具,如:
- MobaXterm:集成了 SSH、SFTP、端口转发等功能(下载地址)。
- Xshell:专业 SSH 客户端(需付费,但有试用版)。
- WindTerm:开源跨平台终端(支持 SSH、串口等)。
6.2.4 登录 Windows 服务器
通过Remote Desktop Protocol(RDP)登录 Windows,Linux 下可使用rdesktop工具:
sudoaptinstallrdesktop# 安装 RDP 客户端rdesktop -u windows_user -p password192.168.1.200# 登录 Windows 服务器6.3 进阶:使用 SSH 密钥认证
6.3.1 为什么使用密钥?
密钥认证比密码更安全(避免暴力破解),且支持无密码登录(适合自动化脚本)。
6.3.2 生成密钥对
使用ssh-keygen生成 RSA 密钥对(公钥 + 私钥):
ssh-keygen -t rsa -b4096-C"your_email@example.com"# 生成 4096 位 RSA 密钥过程说明
- 回车选择默认路径(
~/.ssh/id_rsa)。 - 设置 passphrase(密码,用于保护私钥,可留空直接回车)。
6.3.3 复制公钥至远程主机
将本地公钥(id_rsa.pub)复制到远程主机的authorized_keys文件(实现免密码登录):
ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote_ip# 如 ssh-copy-id -i ~/.ssh/id_rsa.pub ubuntu@192.168.1.100手动复制(若ssh-copy-id不可用)
cat~/.ssh/id_rsa.pub|sshusername@remote_ip"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"6.3.4 测试配置
sshusername@remote_ip# 应直接登录,无需输入密码6.3.5 密钥的安全性
保护私钥:设置文件权限(仅自己可读):
chmod600~/.ssh/id_rsa使用 passphrase:若设置了 passphrase,需通过
ssh-agent缓存密钥(避免每次输入):eval"$(ssh-agent -s)"# 启动密钥代理ssh-add ~/.ssh/id_rsa# 添加私钥到代理
6.4 小结
本章介绍了 Ubuntu 远程登录的核心技术:
- SSH:标准安全协议,支持命令行和密钥认证。
- VNC:图形化远程桌面,适合需要 GUI 的场景。
- 密钥认证:比密码更安全,是实现自动化运维的关键。
建议生产环境中:
- 禁用 root 登录和密码认证,改用密钥认证。
- 配置防火墙规则(如 UFW)限制非法访问。
- 使用图形化工具(如 MobaXterm)简化多主机管理。
习题
- 在 Ubuntu 上安装 OpenSSH,并允许 root 用户通过密钥登录(需先设置 root 密码)。
- 配置 VNC 服务器,设置密码为
vnc123,并允许远程连接。 - 生成 SSH 密钥对,将公钥复制到远程主机
192.168.1.101(用户名test),测试免密码登录。 - 比较 SSH 和 Telnet 的安全性差异,说明为何生产环境不使用 Telnet。