Web托管SSH访问完整指南
Master secure server connections: setup, authentication, essential commands, and security best practices
目录
什么是SSH及为什么不用Telnet
SSH代表安全外壳(Secure Shell),是一种网络协议,提供了一种安全的方式连接到远程服务器。在SSH成为标准之前,系统管理员依赖于Telnet,这是一个有严重漏洞的较早协议:它以纯文本形式传输所有数据。这意味着任何监控网络流量的人都可以轻易捕获密码和敏感信息。
SSH通过加密解决了这个问题。通过SSH连接发送的所有数据都被加密,使任何试图拦截它的人都无法读取。此外,SSH提供了更好的身份验证方法,包括SSH密钥,它们比传统密码更能抵抗暴力攻击。如今,SSH是跨所有托管类型和平台安全远程服务器访问的行业标准。
无论您使用的是共享托管、VPS、云服务器还是专用硬件,SSH都提供了管理基础设施的安全基础。它的加密、认证灵活性和可靠性使其成为现代网络托管和DevOps环境中不可或缺的工具。
哪些托管计划包含SSH
并非所有网络托管计划都提供SSH访问,但可用性取决于您的托管类型。了解哪些计划提供SSH可以帮助您选择合适的解决方案。
共享托管: 一些共享托管提供商在其计划中包含SSH访问,尽管通常作为可选升级。当可用时,共享托管上的SSH受到限制 — 您只能与自己的文件和目录交互,不能与整个服务器交互。从安全角度考虑,这是有道理的,因为共享服务器托管多个客户。
转销商托管: 转销商托管通常包括完整的SSH访问,允许转销商管理其帐户并协助他们自己的客户。这种更高级别的控制反映了转销商对其服务器份额的更大责任。
VPS(虚拟专用服务器): VPS对需要全面SSH访问和完整服务器控制的用户来说是理想的。使用VPS,您拥有虚拟服务器,可以安装任何软件、修改配置和自己管理所有内容。AsiaGB.com等提供商在泰国和新加坡的服务器上提供VPS托管,具有完整的SSH访问和24小时泰语支持。
专用服务器: 专用服务器提供最大的控制和自主权。您拥有物理服务器的唯一所有权,具有无限制的SSH访问和对其配置和安全的完全责任。这是需要完全服务器独立性的用户的选择。
您的第一个SSH连接
使用SSH的第一步是建立与服务器的连接。该过程因您的操作系统而略有不同。
Mac和Linux: 打开终端应用程序并使用SSH命令加上您的用户名和服务器地址:
ssh [email protected] -p 22
如果您的SSH守护程序在非标准端口(除22以外的任何内容)上运行,请使用 -p 标志,后跟端口号。系统会提示您输入密码。输入时,请注意终端不会显示您输入的字符 — 这是正常的安全行为。
Windows: 现代Windows版本(Windows 10及更新版本)具有内置SSH支持。您可以打开PowerShell或Windows Terminal并使用与Mac/Linux相同的SSH命令。对于较旧的Windows版本,请下载PuTTY,这是一个免费的SSH客户端。安装PuTTY后:
- 打开PuTTY
- 在"主机名"字段中输入服务器的主机名或IP地址
- 确认端口设置为22
- 点击打开
- 当提示时输入您的用户名和密码
SSH密钥认证设置
虽然基于密码的SSH登录有效,但SSH密钥提供显着更好的安全性。SSH密钥对由公钥(放在服务器上)和私钥(仅保留在您的计算机上)组成。连接时,SSH验证这些密钥是否匹配,而不需要密码即可授予访问权限。
生成SSH密钥: 首先,在您的计算机上创建SSH密钥对。在Mac、Linux或Windows PowerShell上,运行:
ssh-keygen -t ed25519 -C "[email protected]"
此命令生成现代、安全的Ed25519密钥对。当被问到将其保存在何处时,按Enter使用默认位置(~/.ssh/id_ed25519)。然后系统会提示您设置密码短语,这通过保护您的私钥增加了额外的安全层。
上传您的公钥: 在Mac/Linux上最简单的方法是使用ssh-copy-id:
ssh-copy-id [email protected]
此命令将您的公钥复制到服务器并自动设置正确的权限。在Windows或使用PuTTY时,您需要手动上传公钥或直接编辑服务器的~/.ssh/authorized_keys文件。
使用SSH密钥连接: 配置公钥后,您可以使用相同的SSH命令连接:
ssh [email protected]
如果提示输入密码短语,请输入。您将在不需要提供密码的情况下登录,使认证更快速和安全。
您将使用的基本SSH命令
通过SSH连接后,您需要命令来管理服务器。以下是您最常使用的命令。
ls: 列出当前位置中的文件和目录:
ls
ls -la
-la 选项显示所有文件(包括隐藏文件)及其详细信息,如权限和所有权。
cd: 更改您当前的目录:
cd /path/to/directory
cd ..
cd ~
cd ~ 将您带到主目录,而 cd .. 将您移到父目录。
pwd: 显示当前目录的完整路径:
pwd
cp: 复制文件或目录:
cp file.txt file_copy.txt
cp -r directory/ directory_copy/
mv: 移动或重命名文件:
mv old_name.txt new_name.txt
mv /path/file.txt /new/path/file.txt
rm: 删除文件(警告:删除是永久的):
rm file.txt
rm -rf directory/
chmod: 修改文件权限:
chmod 644 file.txt
chmod 755 script.sh
grep: 在文件中搜索文本:
grep "search_term" file.txt
grep -r "search_term" /path/
tail: 显示文件的最后几行,对于监控日志很有用:
tail /var/log/apache2/error.log
tail -f /var/log/apache2/error.log
-f 标志连续监控文件,实时显示添加的新条目。
使用SCP和SFTP传输文件
除了直接在服务器上执行命令外,您还需要在计算机和服务器之间传输文件。SCP和SFTP都提供安全的方法,使用SSH的加密。
SCP(安全复制协议): SCP提供了一种通过SSH复制文件的直接方法。从您的计算机,使用以下命令上传文件:
scp file.txt [email protected]:/home/username/
scp -r local_folder/ [email protected]:/home/username/
要从服务器下载文件:
scp [email protected]:/home/username/file.txt ./
SFTP(SSH文件传输协议): SFTP类似于传统FTP,但是安全的。它提供了一个交互式界面来浏览和管理文件:
sftp [email protected]
连接后,您可以使用 ls 、cd 、put (上传)和 get (下载)等命令。SFTP的优势在于您可以交互式浏览服务器,而无需记住确切的文件路径,使其对于复杂的文件操作更加用户友好。
SSH隧道和端口转发
SSH隧道是一种高级技术,可在您的服务器上创建与服务的安全连接。例如,如果您的MySQL数据库仅在localhost(127.0.0.1:3306)上侦听,您可以使用SSH隧道从您的计算机安全地访问它。
本地端口转发: 此技术将您计算机上的端口转发到服务器上的服务:
ssh -L 3306:127.0.0.1:3306 [email protected] -N
此命令在本地计算机上打开端口3306并将其转发到服务器的数据库。然后,您可以使用localhost:3306连接到数据库。-N 标志告诉SSH不要打开交互式shell,只需创建隧道。
远程端口转发: 远程转发反向操作 — 它将服务器上的端口转发回您的计算机,对于共享在本地运行的服务很有用:
ssh -R 8080:127.0.0.1:3000 [email protected] -N
此命令使服务器上的端口8080可访问您计算机上的端口3000,允许远程用户安全地访问您的本地服务。
保护您的SSH服务器
如果您拥有自己的服务器(VPS或专用服务器),保护SSH至关重要。攻击者积极尝试危害SSH访问以获得服务器控制。这些实践大大提高了您的安全性。
更改默认SSH端口: SSH默认使用端口22,攻击者知道这一点。将其更改为非标准端口(如2222)可大幅减少未授权登录尝试。编辑 /etc/ssh/sshd_config 并将 Port 22 更改为 Port 2222 ,然后重启SSH:
systemctl restart sshd
禁用通过SSH的Root登录: 永远不要允许root直接通过SSH访问。相反,创建常规用户帐户并在需要管理任务时使用sudo。在sshd_config中,将 PermitRootLogin yes 更改为 PermitRootLogin no 。
禁用密码认证: 配置SSH密钥后,应完全禁用密码登录。在sshd_config中,将 PasswordAuthentication yes 更改为 PasswordAuthentication no 。这完全消除了基于密码的攻击风险。
使用Fail2Ban: Fail2Ban监控失败的登录尝试,并自动阻止超过阈值的IP地址。这对暴力攻击提供了出色的保护。大多数VPS提供商提供轻松的Fail2Ban安装。
保持系统更新: 始终及时应用安全补丁。AsiaGB.com等声誉良好的提供商会自动管理共享和托管托管上的更新,但对于VPS,请验证定期应用安全补丁。
SSH配置文件快捷方式
管理多个服务器变得繁琐,如果您每次连接时都重复输入用户名、主机名和端口。SSH配置文件通过存储这些详细信息供重用来简化连接。
创建或编辑 ~/.ssh/config 并为每个服务器添加条目:
Host myserver
HostName server.com
User username
Port 2222
IdentityFile ~/.ssh/id_ed25519
Host anotherserver
HostName another.com
User anotheruser
Port 22
IdentityFile ~/.ssh/id_rsa
有了此配置,您可以通过简单输入连接:
ssh myserver
SSH自动读取配置文件并应用存储的设置。在管理多个服务器时,这个省时技巧变得无价。