Linux 用另一台服务器,说到底只有三条路:要么远程登录过去操作它(SSH),要么在两边搬数据(scp、rsync、sshfs),要么借用它的网络位置和算力(跳板、端口转发、代理),先想清楚你是要“操作它”还是“用它”,命令自然就选出来了。
下面按实际使用频率拆开讲,每条都给能直接粘贴的命令。
linux怎么远程连接另一个服务器
连之前先确认三个信息
登录不上,九成是地址、端口、账号里错了一个,在目标服务器上依次查:
- 地址:
ip a或hostname -I,云主机看控制台里的内网/公网 IP - 服务是否在跑:
systemctl status sshd,监听端口用ss -tlnp | grep sshd - 防火墙是否放行:CentOS 系
firewall-cmd --list-ports,Ubuntu 系ufw status;云服务器还要在控制台安全组里放行对应端口
改过端口的机器,默认的 22 是不通的,先在配置文件 /etc/ssh/sshd_config 里确认 Port 那一行。
标准连接与首次指纹确认
ssh username@192.168.1.100 ssh -p 2222 username@1.2.3.4 ssh -i ~/.ssh/id_ed25519 username@10.0.0.12
首次连接会提示确认主机指纹,输入 yes 后写进 ~/.ssh/known_hosts,换过系统重装过的机器会报指纹冲突,删掉对应行再连即可。
用 config 文件把常用连接变成别名
每次敲一长串 IP 和端口很烦,在本地 ~/.ssh/config 里写:
Host web2
HostName 10.0.0.12
User deploy
Port 2222
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
之后 ssh web2 就够了。ServerAliveInterval 60 让客户端每分钟发一次心跳,家用宽带和移动网络下明显不容易被掐断。
跑长任务别让终端掉线背锅
编译、备份、数据导入这类活儿,直接开 SSH 敲命令,网络一抖进程就没了,三种做法按习惯挑:
tmux new -s build,断线后tmux attach -t build接着看screen -S build,Ctrl+A再按D挂起- 简单任务用
nohup ./job.sh > job.log 2>&1 &
linux服务器之间传文件用什么命令
这是问得最多的一类需求,先看对比再选工具。
| 命令 | 适合场景 | 断点续传 | 增量同步 | 是否落地 |
|---|---|---|---|---|
| scp | 少量小文件、临时拷一个包 | 不支持 | 不支持 | 落地 |
| rsync | 大目录、定期备份、网站迁移 | 支持 | 支持 | 落地 |
| sftp | 交互式挑文件、受限环境 | 部分支持 | 不支持 | 落地 |
| sshfs | 想当本地目录用、边看边改 | 由上层决定 | 不支持 | 不落地 |
scp:一次性小文件最省事
scp -r ./dist deploy@10.0.0.12:/var/www/ scp -P 2222 deploy@10.0.0.12:/data/backup.tar.gz ./
注意 -P 是大写,端口参数在 scp 和 ssh 里写法不同,这是新手最容易踩的坑。
rsync:大目录和定期同步的主力
rsync -avzP --delete ./site/ deploy@10.0.0.12:/var/www/site/ rsync -avzP --exclude='cache/' --exclude='.log' ./site/ deploy@10.0.0.12:/var/www/site/ rsync -avzP --bwlimit=5000 bigdata/ deploy@10.0.0.12:/data/
-a 保留权限和时间戳,-z 传输压缩,-P 显示进度并支持断点续传,--delete 让目标端与源端严格一致,--bwlimit 按 KB/s 限速,业务高峰期不想把带宽吃满就靠它,加了 --delete 务必先不加跑一次看看文件列表,确认没选错目录。
sshfs:把远端目录挂到本地用
sshfs deploy@10.0.0.12:/data /mnt/remote ls /mnt/remote fusermount -u /mnt/remote
改配置文件、看日志很顺手,但别拿它跑数据库文件或高并发写入,网络延迟会直接变成 IO 等待。
linux怎么用另一台服务器当跳板
生产环境常见一种结构:只有一台机器有公网 IP,其余都在内网,这时另一台服务器不是目的地,而是入口。
ProxyJump 一条命令穿透
ssh -J deploy@1.2.3.4 deploy@10.0.0.12
写进 config 更清爽:
Host target
HostName 10.0.0.12
User deploy
ProxyJump deploy@1.2.3.4
scp 和 rsync 也认这个配置,等于全链路都打通了。
端口转发:把远端服务搬到本地端口
ssh -L 13306:127.0.0.1:3306 deploy@1.2.3.4
本地连 0.0.1:13306 就等于连上了跳板机视角下的数据库,反过来用 -R 可以把本地服务暴露到远端,这类用法在临时排查、跨环境联调时非常好用,但别长期开着不关。
稳定的内网互通方案
长期跨机房组网,业内常见做法是 WireGuard、Tailscale 这类组网工具,或者用 frp 做端口映射,行业共识认为,临时排障用 SSH 隧道就够,长期生产互联应该走独立的组网层,而不是把业务压在一堆手工隧道上。
两台服务器免密登录怎么配置
批量运维、定时同步、Ansible 下发,都绕不开免密。
生成密钥并分发公钥
ssh-keygen -t ed25519 -C "deploy@web1" ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@10.0.0.12 ssh deploy@10.0.0.12
ed25519 比默认的 RSA 更短更快,现在主流发行版都支持,私钥权限必须是 600,.ssh 目录是 700,权限松了 sshd 会直接拒绝使用密钥:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_ed25519
连不上时按这个顺序排
ssh -v deploy@10.0.0.12,看卡在认证的哪一步- 目标端看日志:Debian 系
/var/log/auth.log,RHEL 系/var/log/secure - 确认
sshd_config里PubkeyAuthentication yes、AuthorizedKeysFile指向正确 - 家目录权限过大也会被拒,
chmod 755 ~之后再试 - 开了 SELinux 的机器,注意
~/.ssh的上下文标签
多台机器批量执行
机器一多,逐台 ssh 就不现实了,配好免密后用 Ansible 做 ad-hoc:
ansible all -i hosts.ini -m ping ansible all -i hosts.ini -m shell -a "systemctl restart nginx"
hosts.ini 里按组写 IP,一次命令全组生效,这也是免密登录最实际的价值。
跨服务器传输的带宽成本与地域选择
同样是传 100G 数据,走内网和走公网,账单可能差出一个数量级。
- 同地域内网优先:同一云厂商、同一地域下,走内网 IP 传输通常不计流量费,速度还能跑到内网带宽上限,用
ip a看内网地址,配置里优先写内网 IP。 - 跨地域走公网要算钱:公网出流量按 GB 计费,且不同地域单价不同,据统计,跨地域同步是不少团队月底账单里被低估的一项,尤其是每天定时全量备份的场景。
- 同城机房比跨省更划算:延迟低、单价低,做数据库主从或对象存储同步时优势明显。
- 控制成本的具体手段:
rsync --bwlimit限速、传输前tar czf压缩、只同步增量、把大文件同步放到业务低峰期。
业内专家指出,跨服务器架构设计里,数据流向图比服务器清单更值得先画一遍,很多带宽浪费源于“本来可以走内网却写了公网地址”。
Q&A:linux怎么用另一个服务器常见问题
目标服务器没有公网 IP,本地怎么连?
找一台有公网 IP 且与目标内网互通的机器做跳板,用 ssh -J 跳板用户@跳板IP 目标用户@内网IP 连接,或把 ProxyJump 写进 ~/.ssh/config,跳板机安全组只需对可信 IP 放行 22 端口。
只能用密码登录,怎么提升安全性?
先确认能免密登录成功,再改 /etc/ssh/sshd_config:PasswordAuthentication no、PermitRootLogin no,systemctl reload sshd,改之前务必保留一个已登录的会话别关,改错了还能救回来。
两台服务器时钟不一致会影响连接吗?
会影响,SSH 密钥认证本身对时间不敏感,但涉及 Kerberos、TLS 证书校验、集群组件心跳时,时间偏差过大会直接导致认证失败,统一用 chronyd 或 systemd-timesyncd 对接同一时间源,偏差控制在秒级以内即可。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/783722.html


