在实际的服务器管理工作中,直接坐在机器前面操作几乎是不可能的——服务器要么托管在遥远的数据中心,要么是云上的虚拟机。Linux 提供了一整套基于 SSH(Secure Shell)协议 的工具,让远程管理变得安全且高效。SSH 协议对通信进行加密,确保在不可信网络上传输的命令、密码和数据不会被窃听或篡改。通常用到的三个核心命令是:ssh(远程登录)、scp(安全拷贝)和 sftp(交互式文件传输)。
1. ssh:安全的远程命令行登录
最基本的用法非常简单:
ssh 用户名@远程主机地址
例如:ssh root@192.168.1.100。如果是第一次连接,系统会显示远程主机的密钥指纹,让你确认(输入 yes),此后密钥会被缓存,如果某天突然报密钥不匹配,很可能是有人在中间冒充,应当立刻警觉。
如果你本地和远程的用户名相同,甚至可以直接 ssh 远程主机地址,省去用户名。
在实际使用中,常用选项包括:
-p 端口号:如果 SSH 服务监听在非标准端口(如 2222),需指定ssh -p 2222 user@host;-i 私钥文件:使用密钥认证代替密码,例如ssh -i ~/.ssh/my_key user@host;-L/-R/-D:本地/远程端口转发和动态 SOCKS 代理,用于通过跳板机访问内部网络服务,这在中高级运维中非常实用。
强烈推荐的做法是关闭密码登录,启用密钥认证。安全且免去每次输入密码。配置流程通常为:
- 在本地生成一对密钥:
ssh-keygen -t ed25519(推荐 ed25519 算法,比 RSA 更安全更快); - 将公钥复制到远程服务器:
ssh-copy-id user@host; - 测试无误后,编辑远程服务器上的
/etc/ssh/sshd_config,设置PasswordAuthentication no并重启 sshd 服务。
日常工作中,ssh 还可以直接执行一条命令而不进入交互式 shell:
ssh user@host 'df -h' # 远程查看磁盘使用情况
ssh user@host 'systemctl status nginx'
这在脚本化巡检时极其方便。
2. scp:在本地与远程之间安全拷贝文件scp 基于 SSH 协议,用法很像普通的 cp,只是地址前面要加上远程标识。基础语法为:
scp 源路径 目标路径
文件从本地上传到远程:
scp report.pdf user@192.168.1.100:/home/user/docs/
从远程下载到本地:
scp user@192.168.1.100:/var/log/syslog ./remote-syslog.txt
拷贝目录需要加 -r(递归):
scp -r my_project/ user@host:/opt/backups/
常用选项:
-P 端口号:指定远程 SSH 端口(注意是大写 P,与ssh的小写 p 区分);-i 私钥文件:使用指定私钥;-C:传输过程中压缩数据,慢速网络下可明显提升速度。
scp 适合在操作前就明确要传哪些文件,一次执行完毕。如果你需要不断浏览和挑选文件,sftp 更合适。
3. sftp:交互式文件传输与远程文件管理sftp 同样基于 SSH,但打开后是一个交互式命令行环境,可以在远程目录间移动、列出文件、上传下载,就像在使用一个极简的 FTP 客户端。连接:
sftp user@host
进入后会出现 sftp> 提示符,常用命令包括:
ls,cd,pwd:像操作本地文件一样浏览远程;lls,lcd,lpwd:操作本地目录(l 代表 local);get 远程文件 [本地路径]:下载文件;put 本地文件 [远程路径]:上传文件;get -r 远程目录/put -r 本地目录:递归下载/上传整个目录;rm,mkdir等:操作远程文件系统。
例如,登录后要下载远程的 /var/log/nginx/access.log 到当前本地目录,只需:
get /var/log/nginx/access.log
sftp 也支持断点续传(reput/reget),在网络不稳定的大文件传输中非常有用。
4. 实用建议
- 在云主机上,默认用户名通常是
ubuntu、ec2-user、centos等,而非root;必须用提供的初始密钥(.pem文件)连接。 - 配置文件
~/.ssh/config可以为常用连接设置别名、端口、密钥,避免反复输入长串命令。例如:
Host myserver
HostName 203.0.113.10
User admin
Port 2222
IdentityFile ~/.ssh/id_ed25519
配置完毕后,ssh myserver 即可一键连接,scp file myserver:~ 同样生效。
- 若网络极差,传输大文件时可考虑
rsync(需另学),它支持增量传输和断点续传,比scp更高效。 - 永远不要在生产服务器上随意打开密码认证,也务必保护好私钥文件(权限设为 600,即
chmod 600 ~/.ssh/id_ed25519)。
掌握 ssh、scp 和 sftp,就掌握了远程操控 Linux 服务器的基本桥梁。它们轻量、强大且标配于所有 Linux 环境,是日常运维中使用频率最高的三件套。