核心方法:使用 SSH (Secure Shell)
SSH 是目前 Linux/Unix 系统远程管理的事实标准。

基本登录(最常用)
当你知道服务器的 IP 地址或域名,以及你的用户名时,可以使用以下命令格式:
ssh [用户名]@[服务器IP地址或域名]
示例:
假设你的服务器 IP 地址是 168.1.100,你想用 root 用户登录。
ssh root@192.168.1.100
执行后,系统会提示你输入该用户的密码,输入密码时,屏幕上不会显示任何字符(这是正常的安全设计),直接输入后按回车键即可。

首次连接提示:
如果是第一次连接这台服务器,你会看到类似下面的警告,这是因为 SSH 无法验证服务器的“主机密钥”(用于确认你连接的是正确的服务器,没有被中间人攻击),输入 yes 并回车即可。
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.1.100' (ECDSA) to the list of known hosts.
之后,你的本地 ~/.ssh/known_hosts 文件会保存这台服务器的密钥,下次连接就不会再提示了。
指定不同的 SSH 端口
默认情况下,SSH 服务监听在 22 端口,但出于安全考虑,很多管理员会修改默认端口,这时,你需要使用 -p 参数来指定端口。
ssh -p [端口号] [用户名]@[服务器IP地址或域名]
示例:

如果服务器的 SSH 端口被修改为 2222,用户仍然是 root。
ssh -p 2222 root@192.168.1.100
更安全的登录方式:SSH 密钥对
每次输入密码很麻烦,也不够安全,最佳实践是使用 SSH 密钥对 进行认证,这是一种“公钥/私钥”机制,你只需要在本地生成一次密钥,然后将公钥上传到服务器,之后就可以实现免密码登录了。
步骤:
第一步:在本地客户端生成 SSH 密钥对
如果你的 ~/.ssh/ 目录下没有 id_rsa(私钥)和 id_rsa.pub(公钥)文件,就运行以下命令:
ssh-keygen -t rsa -b 4096
一路按回车键即可(使用默认的文件名和空密码),如果密钥已存在,系统会提示你是否覆盖,通常选择 n (no)。
第二步:将公钥上传到服务器
使用 ssh-copy-id 命令可以轻松完成,它会自动将你的公钥追加到服务器上用户的 ~/.ssh/authorized_keys 文件中。
ssh-copy-id -p [端口号] [用户名]@[服务器IP地址或域名]
示例:
ssh-copy-id -p 2222 root@192.168.1.100
执行后,它会要求你输入一次 root 用户的密码,验证通过后,你的公钥就安全地复制到服务器上了。
第三步:免密码登录
你可以直接 SSH 登录,而无需输入密码了。
ssh -p 2222 root@192.168.1.100
进阶技巧和配置
使用配置文件简化连接
当你需要频繁连接多台服务器时,每次都输入 -p 和用户名会很繁琐,你可以使用 SSH 的配置文件 ~/.ssh/config 来为每台服务器设置一个别名。
编辑配置文件:
nano ~/.ssh/config
添加以下内容:
# 为服务器1设置别名
Host server1
HostName 192.168.1.100
User root
Port 2222
# 为服务器2设置别名
Host server2
HostName example.com
User myuser
Port 22
配置说明:
Host: 你在命令行中使用的别名(server1)。HostName: 服务器的真实 IP 地址或域名。User: 默认登录用户名。Port: 默认 SSH 端口。
使用别名登录:
登录变得非常简单:
ssh server1
通过中间服务器(堡垒机/跳板机)连接
如果你的本地电脑不能直接访问目标服务器,但可以访问一台中间服务器(我们称之为“堡垒机”或“跳板机”),你可以使用 -J 参数进行“代理跳转”。
ssh -J [跳板机用户]@[跳板机IP] [目标服务器用户]@[目标服务器IP]
示例:
你只能连接到 gateway (IP 0.0.1),然后通过它连接到 db-server (IP 168.1.200)。
ssh -J user@10.0.0.1 root@192.168.1.200
这样,SSH 会先帮你登录到 gateway,然后从 gateway 再登录到 db-server。
其他访问方式(了解即可)
除了 SSH,还有一些其他方式,但它们要么不安全,要么用于特定场景。
Telnet
- 协议: 明文传输,非常不安全。
- 用途: 几乎已被完全淘汰,强烈不推荐使用。
- 命令:
telnet [IP] [端口]
Rlogin / Rsh
- 协议: 基于信任关系,不验证密码,同样非常不安全。
- 用途: 已被 SSH 完全取代。
VNC / RDP (图形界面远程桌面)
- 用途: 如果你需要操作服务器的图形用户界面,而不是命令行。
- VNC: 常用于 Linux/Unix 系统。
- RDP: 主要用于 Windows 系统(在 Linux 上也有客户端,如
remmina)。 - 注意: 它们是“远程桌面”协议,与“远程终端”协议(如 SSH)不同,它们传输的是整个桌面画面,占用带宽较高。
使用文件传输工具
如果你只是想传输文件,而不是登录服务器,可以使用基于 SSH 的工具:
scp: 安全的文件拷贝。rsync: 高效的文件同步工具。sftp: 交互式的安全文件传输,类似于 FTP。
总结与最佳实践
| 方法 | 命令示例 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|---|
| SSH (密码) | ssh user@ip |
简单,所有服务器都支持 | 密码易被暴力破解,需手动输入 | ⭐⭐⭐ |
| SSH (密钥) | ssh user@ip (需先配置密钥) |
安全、便捷、免密码 | 需要初始配置密钥 | ⭐⭐⭐⭐⭐ (强烈推荐) |
| SSH (配置文件) | ssh myserver |
管理多台服务器非常方便 | 需要额外配置文件 | ⭐⭐⭐⭐⭐ (必备技能) |
| SSH (跳板机) | ssh -J jumphost user@target |
解决网络访问限制 | 命令稍长 | ⭐⭐⭐⭐ (根据网络环境) |
| VNC/RDP | vncviewer ip:port |
可视化操作 | 占用带宽高,非命令行场景 | ⭐⭐ (特定场景使用) |
核心建议:
- 首选 SSH:对于所有命令行操作,SSH 是你的不二之选。
- 务必使用密钥认证:为了安全和便利,请立即配置和使用 SSH 密钥对。
- 善用配置文件:如果你管理超过一台服务器,花几分钟配置
~/.ssh/config会极大提升你的工作效率。 - 修改默认端口:在服务器上,将 SSH 端口从
22修改为一个不常用的端口,可以避免大量自动化扫描攻击。 - 使用防火墙:确保服务
