Linux 远程登录
服务器通常放在机房或云端,没有显示器,运维全靠远程登录。SSH(Secure Shell,安全外壳协议)通过加密通道访问远程主机,是 Linux 远程管理的标准方式,也是每个运维与后端开发者必须掌握的技能。
SSH 是什么
SSH 是应用层的加密协议,默认端口 22,用于安全地远程执行命令、传输文件。相比明文传输的 telnet,SSH 全程加密,能有效防止密码在网络中被窃听。Linux 下最常用的客户端是 OpenSSH 自带的 ssh 命令。
基本登录用法
语法为 ssh 用户名@主机地址:
ssh root@192.168.1.100 # 登录远程主机
# 输出:root@192.168.1.100's password:
ssh -p 2222 zhangsan@192.168.1.100 # 指定非默认端口 2222
首次连接会提示确认主机指纹,输入 yes 回车即可继续。
Windows 下的客户端
- 系统自带:Windows 10+ 的 PowerShell 或终端里直接敲 ssh。
- Xshell / FinalShell / PuTTY:图形化工具,可保存多台会话,复制粘贴方便。
- VS Code Remote-SSH:远程开发利器,打开远程目录像编辑本地文件一样。
密钥免密登录
密钥登录比密码更安全:公钥放在服务器,私钥留在本地。生成本地密钥对:
ssh-keygen -t rsa -b 4096 # 本地生成密钥对,一路回车即可
# 输出:Your identification has been saved in /root/.ssh/id_rsa
ssh-copy-id root@192.168.1.100 # 把公钥安装到远程服务器
# 输出:Number of key(s) added: 1
ssh root@192.168.1.100 # 此后登录不再需要密码
安全加固建议
修改 SSH 服务配置前先备份,防止改错无法恢复:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo vim /etc/ssh/sshd_config
生产服务器建议调整以下几项:
Port 2222 # 换掉默认 22 端口,避开扫描
PermitRootLogin no # 禁止 root 直接登录,用普通用户+sudo
PasswordAuthentication no # 关闭密码登录,只允许密钥
改完重启服务并确认状态(先保留一个已登录会话,防断线):
sudo systemctl restart sshd
systemctl status sshd
# 输出:Active: active (running)
传输文件:scp 与 sftp
传文件用 scp,用法类似 cp:
scp local.txt root@192.168.1.100:/tmp/ # 本地上传到远程
scp root@192.168.1.100:/tmp/a.txt ./ # 从远程下载到当前目录
sftp root@192.168.1.100 # 交互式文件管理
# 输出:sftp> ls
小结:SSH 是远程管理 Linux 的必备技能:ssh 用户@地址 登录、密钥对实现免密、scp 传文件。生产服务器务必换端口、关闭密码登录,并且先测通新配置再断开旧会话。