使用命令操作服务器
在自己电脑上打开cmd或者PowerShell
#检查服务器是否可用 nc -zv 172.16.0.1 10022
1.基础连接命令(最常用)
# 标准登录(默认端口22) ssh root@你的服务器IP # 如果修改过端口(10022是端口,root用户,@后面接服务器Ip) ssh -p 10022 root@172.16.0.1 # 使用普通用户登录(登录后如需管理员权限再 su 或 sudo) ssh yourname@你的服务器IP
2.免密登录(SSH 密钥对配置)—— 必做安全措施
目的:再也不输密码,同时杜绝暴力破解。
步骤(在你自己电脑上操作,不是服务器):
# 1. 生成密钥对(一路回车即可,不要设密码短语) ssh-keygen -t rsa -b 4096 -C "your_email@example.com" # 执行后会在 ~/.ssh/ 下生成 id_rsa(私钥,打死别给人)和 id_rsa.pub(公钥) # 2. 把公钥上传到服务器(三种方法任选) # 方法A(最优雅): ssh-copy-id root@你的服务器IP # 方法B(手动复制): cat ~/.ssh/id_rsa.pub | ssh root@你的服务器IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" # 方法C(如果端口非22): ssh-copy-id -p 2222 root@你的服务器IP
配置完成后,再次 ssh root@IP 就直接登录了,不再提示密码。
3.安全加固(堵住暴力破解的嘴)
配置完密钥后,建议关闭密码登录(只允许密钥),操作如下:
# 在服务器上编辑 SSH 配置文件 vi /etc/ssh/sshd_config # 修改以下几项: PasswordAuthentication no # 禁止密码登录 PermitRootLogin prohibit-password # 禁止 root 用密码,只允许密钥(或者直接设为 no) Port 2222 # 把默认 22 改成其他端口(防扫描)
改完后重启服务:
systemctl restart sshd
注意:改端口前,先开一个新窗口用新端口测试登录,确认能连上再关旧窗口,否则把自己锁外面就悲剧了。
4.高级操作(端口转发 / 跳板机)
本地端口转发(把远程服务的端口映射到本地):
# 把服务器的 3306(MySQL)映射到本地的 33060,方便用本地工具连接 ssh -L 33060:127.0.0.1:3306 root@服务器IP # 然后本地 Navicat 连 localhost:33060 即可
动态 SOCKS5 代理(调试):
ssh -D 1080 root@服务器IP # 然后在浏览器或系统网络设置里配置 SOCKS5 代理为 127.0.0.1:1080
通过跳板机登录内网服务器:
ssh -J 跳板机用户@跳板机IP 目标内网IP
5.常见报错及解决(你大概率会遇到)
| 报错信息 | 原因 | 解决方法 |
|---|---|---|
Connection refused |
服务没开 / 端口不对 / 防火墙拦了 | 检查 systemctl status sshd,确认防火墙开了端口 |
Permission denied (publickey,password) |
密钥不对或密码输错 | 检查 authorized_keys 内容是否和本地公钥一致,权限是否为 600 |
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED |
服务器重装系统了,指纹变了 | 执行 ssh-keygen -R 服务器IP 清除旧指纹 |
Too many authentication failures |
本地 ~/.ssh/config 里配了太多私钥 |
指定具体私钥登录:ssh -i ~/.ssh/id_rsa root@IP |
6.效率小技巧(写进 ~/.ssh/config)
在本地创建 ~/.ssh/config 文件,以后直接 ssh myserver 就能连:
Host myserver HostName 你的服务器IP Port 2222 User root IdentityFile ~/.ssh/id_rsa
7.scp 命令(最常用,单次上传)
# 上传单个文件 scp /本地路径/文件.txt root@你的服务器IP:/远程目标路径/ # 上传整个文件夹(加 -r 递归) scp -r /本地文件夹/ root@你的服务器IP:/远程目标路径/ # 如果 SSH 端口不是 22(例如 2222) scp -P 2222 -r /本地文件夹/ root@你的服务器IP:/远程目标路径/ # 如果用的是普通用户,上传到用户目录 scp file.txt yourname@你的服务器IP:~/ # ~/ 就是用户家目录
8.rsync 命令(推荐!增量同步,支持断点续传)
比 scp 强大得多,适合大文件或多次上传(只传改变的部分):
# 基本用法(同步整个文件夹) rsync -avz --progress /本地文件夹/ root@你的服务器IP:/远程目标路径/ # 参数解释: # -a 归档模式(保留权限、时间戳等) # -v 显示详细信息 # -z 传输时压缩(省带宽) # --progress 显示进度条 # 如果端口非 22 rsync -avz -e "ssh -p 2222" /本地文件夹/ root@你的服务器IP:/远程目标路径/
注意:rsync 路径末尾的 / 很关键:
-
/本地文件夹/(有斜杠)→ 同步文件夹内的内容 -
/本地文件夹(无斜杠)→ 同步文件夹本身

浙公网安备 33010602011771号