1.1 确认你有目标日本服务器的公网IP或域名、登录用户名(如 ubuntu 或 ec2-user)及 SSH 端口(默认22)。
1.2 确保本地环境安装了 ssh、scp、rsync、git;如果用 VSCode 远程调试,安装 Remote - SSH 插件;Windows 用户可准备 PuTTY/WinSCP 或 WSL。
2.1 在本地执行:ssh-keygen -t ed25519 -C "your_email" 并记住私钥路径(默认 ~/.ssh/id_ed25519)。
2.2 将公钥上传到服务器:ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 22 user@server_ip。如果无法使用 ssh-copy-id,可手动将公钥追加到服务器的 ~/.ssh/authorized_keys。
3.1 编辑本地 ~/.ssh/config,添加示例:
Host jp-bastion HostName bastion.jp.example.com User jumpuser IdentityFile ~/.ssh/id_ed25519
3.2 直接访问目标机器:
Host jp-app HostName 10.0.1.10 User appuser IdentityFile ~/.ssh/id_ed25519 ProxyJump jp-bastion
4.1 在云控制台(如 AWS、GCP、阿里云)开放SSH端口,仅允许你的办公/家用IP或跳板IP访问,避免开放0.0.0.0/0。
4.2 服务器内使用 ufw 或 firewalld 控制内网端口;例如:sudo ufw allow 22/tcp && sudo ufw enable。
5.1 使用 rsync 同步代码:rsync -avz --delete -e "ssh -p 22" ./dist/ appuser@server_ip:/var/www/app/。rsync 保留权限并支持增量同步。
5.2 简单拷贝可用 scp:scp -P 22 ./build.tar.gz appuser@server_ip:/tmp/ && ssh -p 22 appuser@server_ip "tar -xzf /tmp/build.tar.gz -C /var/www/app".
6.1 将 Dockerfile 与镜像推送到私有/公有仓库(例如 Docker Hub 或私有 Registry),在日本服务器上拉取镜像:docker pull repo/name:tag。
6.2 运行容器并映射端口:docker run -d --name myapp -p 80:3000 repo/name:tag,或使用 docker-compose 部署一键启动。
7.1 在 VSCode 中使用 Remote-SSH,添加你在 ~/.ssh/config 中的 Host(如 jp-app),点击“Connect”。插件会在服务器上安装服务端组件并打开远程工作区。
7.2 若需调试 Node/Python/Java,使用本地端口转发:ssh -L 9229:localhost:9229 -p 22 appuser@server_ip,然后在本地 VSCode 连接到 127.0.0.1:9229 作为调试端口。
8.1 若目标主机没有公网IP,可通过跳板或反向隧道:在服务器执行 ssh -R 22022:localhost:22 user@bastion_ip,之后从本地连接到 bastion 的 22022 端口实现访问。
8.2 使用 autossh 保持隧道自动重连:autossh -M 0 -f -N -R 22022:localhost:22 user@bastion_ip。
9.1 常用命令:sudo systemctl restart myapp.service;查看服务日志:sudo journalctl -u myapp.service -f。
9.2 查看端口占用与网络:ss -tulnp | grep 3000;检查磁盘:df -h;检查权限与所有者:ls -la /var/www/app。
10.1 禁用密码登录:编辑 /etc/ssh/sshd_config,将 PasswordAuthentication no,然后 sudo systemctl reload sshd。
10.2 安装 fail2ban 防止暴力破解;必要时更改 SSH 端口并配合安全组限制来源IP。
问:我在连接日本服务器时遇到 SSH 认证失败怎么办?
答:先确认本地私钥权限(chmod 600 ~/.ssh/id_ed25519),确认公钥已追加到服务器 ~/.ssh/authorized_keys 并且 authorized_keys 权限为600,.ssh 文件夹权限为700。用 ssh -v -p 22 user@ip 查看详细调试信息,检查是否使用了正确的私钥(ssh -i ~/.ssh/id_ed25519 ...)。若使用跳板,确认 ProxyJump/ProxyCommand 配置正确并且跳板能连通。
问:如何在远程调试时保证端口安全且不中断线上服务?
答:优先在测试或预发环境进行远程调试;使用 SSH 本地端口转发(ssh -L)将远端调试端口映射到本地,只对本地开放,避免直接在公网开放调试端口。使用防火墙限制只能从本机或跳板IP访问调试端口,并在调试结束后关闭端口或杀掉调试进程。
问:如何快速排查部署后应用无法访问的问题?
答:逐步排查:1)确认容器/进程在跑(docker ps / systemctl status);2)确认服务监听端口(ss -tulnp);3)检查防火墙与云安全组规则;4)查看应用日志(journalctl / 应用日志文件);5)检查静态文件路径与权限(ls -la);6)用 curl 本地访问(curl http://localhost:3000)和从外部主机访问以判断是进程问题还是网络问题。