使用命令操作服务器

在自己电脑上打开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 路径末尾的 / 很关键:

  • /本地文件夹/(有斜杠)→ 同步文件夹内的内容

  • /本地文件夹(无斜杠)→ 同步文件夹本身

 

posted @ 2026-06-22 10:40  时光独醒  阅读(22)  评论(0)    收藏  举报