| 2025-03-16
SSH(Secure Shell)命令是远程管理服务器的核心工具之一,它为管理员和用户提供了一种安全的方式来连接远程服务器并执行各种操作。在开始使用 SSH 命令前,确保本地机器和远程服务器都安装并运行了 SSH 服务。在大多数 Linux 发行版中,SSH 客户端是默认安装的,而服务器端可能需要手动安装与配置。对于 Windows 系统,可通过安装如 PuTTY 等 SSH 客户端软件来使用 SSH 命令。
基本连接命令
最常用的 SSH 命令格式为:ssh [用户名]@[服务器地址]。例如,如果你的用户名是 “admin”,服务器地址是 “192.168.1.100”,那么在终端中输入ssh admin@192.168.1.100后回车,系统会提示你输入该用户在远程服务器上的密码。输入正确密码后,你就成功登录到了远程服务器,此时可在远程服务器的命令行环境中执行各种操作,就如同在本地操作一样。
为了方便使用,还可以在 SSH 命令中添加端口参数。默认情况下,SSH 服务使用 22 端口,但有时管理员可能会更改端口以增强安全性。例如,若服务器的 SSH 端口改为了 2222,连接命令则变为ssh -p 2222 admin@192.168.1.100。
执行单次命令
有时我们并不需要长时间登录到远程服务器,只是想执行一条简单的命令并获取结果。此时,可在 SSH 命令后直接跟上要执行的命令。例如,想在远程服务器上查看当前目录下的文件列表,命令为ssh admin@192.168.1.100 "ls -l"。这里双引号内的ls -l就是要在远程服务器上执行的命令,执行后会在本地终端显示远程服务器上对应目录的文件列表信息。
文件传输命令
SSH 不仅能用于远程登录和执行命令,还提供了安全的文件传输功能。通过scp(Secure Copy)命令可实现本地与远程服务器之间的文件复制。
-从本地复制文件到远程:语法为scp [本地文件路径] [用户名]@[服务器地址]:[远程目标路径]。比如,要将本地当前目录下的 “test.txt” 文件复制到远程服务器的 “/home/admin/” 目录下,命令为scp test.txt admin@192.168.1.100:/home/admin/。执行命令后,会提示输入远程服务器的密码,成功验证后文件开始传输。
-从远程复制文件到本地:语法为scp [用户名]@[服务器地址]:[远程文件路径] [本地目标路径]。例如,要从远程服务器的 “/var/log/syslog” 文件复制到本地当前目录,命令为scp admin@192.168.1.100:/var/log/syslog.,注意命令最后的点表示本地当前目录。
如果要复制整个目录,需要添加-r(递归)选项。如将本地的 “myfolder” 目录复制到远程服务器的 “/home/admin/” 目录下,命令为scp -r myfolder admin@192.168.1.100:/home/admin/。
SSH 密钥认证
使用密码登录虽然简单,但存在一定的安全风险,尤其是密码强度不够时。SSH 密钥认证是一种更安全的登录方式。首先,在本地机器上生成密钥对,可使用ssh-keygen命令。执行该命令后,按回车键接受默认的密钥保存位置和文件名,然后输入一个安全的密码(也可留空,但不建议,设置密码可进一步保护私钥)。生成的密钥对包括一个私钥(默认保存在~/.ssh/id_rsa)和一个公钥(默认保存在~/.ssh/id_rsa.pub)。
接下来,需要将公钥添加到远程服务器上对应的用户账户中。可通过ssh-copy-id命令简化这一过程,命令格式为ssh-copy-id [用户名]@[服务器地址]。例如,ssh-copy-id admin@192.168.1.100,执行后输入远程服务器密码,公钥就会自动添加到远程服务器的authorized_keys文件中。此后,使用 SSH 连接该服务器时,系统会尝试使用私钥进行认证,若认证成功则无需输入密码即可登录。
SSH 代理转发
SSH 代理转发是一项强大的功能,它允许你通过已建立的 SSH 连接,在远程服务器上访问其他受 SSH 保护的资源,而无需在远程服务器上配置密钥。假设你在本地机器 A 上,通过 SSH 连接到服务器 B,而服务器 B 又需要访问服务器 C,且你希望避免在服务器 B 上配置访问服务器 C 的密钥。此时,你可以在连接服务器 B 时启用代理转发功能。在本地执行ssh -A admin@192.168.1.100(这里假设 192.168.1.100 是服务器 B 的地址),连接成功登录到服务器 B 后,当你尝试从服务器 B 通过 SSH 连接到服务器 C 时,本地机器 A 的 SSH 代理会处理认证过程,就像你直接从本地连接服务器 C 一样,大大提高了操作的便捷性和安全性。
高级配置与优化
在~/.ssh/config文件(对于 Windows 用户使用 PuTTY,可在 PuTTY 配置中进行类似设置)中,可以进行一系列高级配置来优化 SSH 使用体验。比如,为经常访问的服务器设置别名。假设你经常访问 IP 为 192.168.1.100 的服务器,用户名为 admin,端口为 2222,你可以在~/.ssh/config文件中添加如下内容:
Host myServerAlias
HostName 192.168.1.100
User admin
Port 2222
此后,你只需在终端输入ssh myServerAlias,即可连接到对应的服务器,无需每次输入完整的连接信息。此外,还可以配置连接超时时间、压缩选项等,例如添加ServerAliveInterval 60来设置每 60 秒向服务器发送一次存活探测包,防止因长时间无操作导致连接断开。
SSH 命令在远程访问服务器的场景中功能强大且应用广泛。通过上述介绍的基本连接、单次命令执行、文件传输、密钥认证、代理转发以及高级配置等用法,能极大提高远程管理服务器的效率与安全性。
拓展阅读
-SSH 端口转发:SSH 端口转发可将本地端口与远程服务器端口进行映射,用于突破网络限制或访问内部网络服务。分为本地端口转发(ssh -L)和远程端口转发(ssh -R),例如ssh -L 8080:localhost:80 user@server将本地 8080 端口映射到远程服务器的 80 端口。
-SSH 配置文件优化:本地 SSH 配置文件(~/.ssh/config)可进行优化,如设置别名方便连接常用服务器。在配置文件中添加Host myserver HostName 192.168.1.100 User admin后,使用ssh myserver即可连接对应服务器。
-SSH 安全加固:除了使用密钥认证,还可通过禁用 root 用户直接登录(修改/etc/ssh/sshd_config中的PermitRootLogin no)、限制登录 IP(使用AllowUsers或AllowGroups配置项)等方式加固 SSH 安全。