远程连接

一、SSH 基础概念

(一)什么是 SSH

SSH,即 Secure Shell Protocol,中文名为安全外壳协议。它就像是网络数据的 “安全卫士”,在不安全的网络环境中,为各类网络服务构建起安全的传输环境。其最常见的用途便是远程登录系统,借助它,用户能够在本地设备上远程操控服务器,实现命令的传输与执行。

(二)SSH 远程登录的必要条件

服务器 IP 地址:服务器 IP 地址是服务器在网络中的标识,格式为 [0 - 255].[0 - 255].[0 - 255].[0 - 255] 。在登录之前,必须明确目标服务器的 IP 地址。

端口号:SSH 默认使用 22 端口,这个端口就如同服务器的 “数据进出口”。不过,在特殊情况下,可根据实际需求修改端口号。

登录凭证:登录凭证可以是 [用户名 & 密码] 组合,也可以是密钥。它就像登录服务器的 “钥匙”,用于验证用户身份,确保只有获得授权的用户才能登录。

二、SSH 工具介绍

(一)系统自带工具

MacOS:Mac 系统自带的 Terminal 终端,是进行 SSH 远程登录的有力工具。用户通过它输入相应命令,就能开启远程登录的操作。

Windows:Windows 系统的 PowerShell 同样支持 SSH 远程登录功能。打开 PowerShell,输入相关命令,即可与远程服务器建立连接。

(二)第三方工具

PuTTY:PuTTY 是一款备受欢迎的 SSH 工具。打开 PuTTY 后,在 “Host Name (or IP address)” 栏填写服务器 IP 地址,“Port” 保持默认的 22 端口,点击 “Open” 按钮,按照提示操作就能完成登录。

XShell:XShell 功能强大且界面友好。新建会话时,需要填写好服务器的主机名(即 IP 地址)、端口号、用户名等信息。首次连接时,系统会提示保存主机密钥,选择 “接受并保存”,再输入密码即可登录。

MobaxTerm:MobaxTerm 操作便捷,点击 “Quick connect”,输入服务器 IP 地址、用户名等信息,就能快速连接到服务器。此外,它还具备文件传输等实用功能。

三、SSH 常用命令讲解

ssh [用户名]@[服务器 IP 地址]:这是最基本的登录命令。例如,要以 “ubuntu” 用户的身份登录练习主机,在终端或 PowerShell 中输入:

ssh ubuntu@8.138.156.231 -p 5009

ssh -l [用户名] [服务器 IP 地址]:该命令与上一条类似,只是用户名的位置有所不同。例如:

ssh -l ubuntu 8.138.156.231 -p 5009

执行exit,退出远程

exit

ssh-keygen:该命令用于生成密钥对。在本地终端输入此命令,按照提示操作,会生成公钥和私钥。其中,公钥可上传至服务器,以实现免密码登录。

#在本地环境执行
ssh-keygen

ssh-copy-id [用户名]@[服务器 IP 地址]:这个命令能够将本地生成的公钥复制到远程服务器上,方便实现免密码登录。例如 “ssh-copy-id -p 5009 ubuntu@8.138.156.231”,输入密码后,公钥就会被复制到服务器。

ssh-copy-id  -p 5009 ubuntu@8.138.156.231

再次登陆练习主机时,就不需要输入密码。保管好自己的凭据。

借助 SSH,搭配 scp(secure copy)命令,可实现本地与远程服务器之间的文件传输。将本地的 “test.txt” 文件复制到远程服务器的 “/home/centos/” 目录,在本地终端输入 “scp test.txt centos@192.168.233.128:/home/centos/”,输入密码后,文件便开始传输。从远程服务器下载文件到本地时,使用 “scp centos@192.168.233.128:/home/centos/test.txt. ”,这里最后的 “.” 表示当前本地目录。

SSH 可搭建安全隧道,实现端口转发。假设本地开发环境需要访问远程服务器上的 MySQL 数据库服务(默认端口 3306),但远程服务器只开放了 SSH 端口。此时,在本地终端输入 “ssh -L 3306:localhost:3306 centos@192.168.233.128”,输入密码登录后,本地的 3306 端口就和远程服务器的 3306 端口建立了安全连接。这样,本地的数据库客户端(如 Navicat)就可以通过连接 “localhost:3306” 来访问远程服务器上的 MySQL 数据库,保障了数据传输安全。

四、SSH 原理剖析

(一)加密通信

SSH 采用多种加密算法保障通信安全。连接建立时,客户端和服务器协商使用对称加密算法(如 AES)和非对称加密算法(如 RSA)。对称加密用于快速处理大量数据加密,非对称加密用于密钥交换和身份验证。客户端向服务器发起连接请求,服务器发送公钥,客户端用公钥加密登录信息(如密码),服务器用私钥解密,确保数据安全。

(二)身份验证

基于密码的验证:客户端输入用户名和密码,服务器将接收到的密码与存储的用户密码比对,匹配则允许登录。

基于密钥的验证:客户端生成密钥对(公钥和私钥),将公钥上传到服务器。登录时,客户端用私钥对特定信息签名,服务器用公钥验证签名,正确则允许登录,安全性更高。

(三)会话建立

客户端和服务器完成加密算法协商和身份验证后,建立安全会话。在此会话中,数据传输进行压缩和加密,提高传输效率并保证数据安全。远程登录后执行的命令及结果,都在这个安全会话中传输。

五、SSH Server

(一)SSH Server 简介

SSH Server(SSH 服务器)是运行在远程服务器上的软件组件,负责监听 SSH 客户端的连接请求,处理加密通信、身份验证等工作,为用户提供远程登录及其他安全网络服务。常见的 SSH Server 软件如 OpenSSH,广泛应用于 Linux、Unix 系统,部分 Windows 系统也可通过安装相关软件使用。

(二)安装与配置

安装:在 Linux 系统中,使用包管理器安装 OpenSSH Server。CentOS 系统中,执行 “yum install openssh - server” 命令;Ubuntu 系统中,执行 “apt - get install openssh - server” 命令。安装完成后,服务会自动启动并设置为开机自启。

配置:SSH Server 的配置文件通常是 “/etc/ssh/sshd_config”。可修改端口号(默认 22),如将 “Port 22” 改为其他端口增强安全性;设置是否允许密码登录,“PasswordAuthentication yes” 表示允许,“PasswordAuthentication no” 禁止,推荐使用密钥验证禁止密码登录;还可配置允许登录的用户列表,如 “AllowUsers username1 username2” 指定允许登录的用户。

###(三)启动与停止

在 Linux 系统中,使用系统管理命令控制 SSH Server。CentOS 系统中,“systemctl start sshd” 启动服务,“systemctl stop sshd” 停止服务,“systemctl restart sshd” 重启服务。Ubuntu 系统中,命令类似,服务是 “ssh”,如 “systemctl start ssh” 等。

(四)安全注意事项

定期更新 SSH Server 软件,修复安全漏洞;限制登录尝试次数,防止暴力破解密码;启用防火墙,只允许特定 IP 地址或网段访问 SSH Server;及时查看日志文件(如 “/var/log/secure”),监控异常登录行为。