如何在FTP远程服务器运行Node.js应用?SSH连接遇权限问题
问题解决方案
核心结论:FTP无法直接运行Node.js应用
FTP仅作为文件传输协议,只负责文件的上传与下载,没有执行命令、启动进程的权限,必须通过远程终端(SSH)登录服务器才能运行Node.js应用。
解决SSH连接失败(Permission denied (publickey))的方法
方法1:开启服务器的密码登录(若可行)
如果能通过服务商提供的网页控制台等方式登录服务器,按以下步骤操作:
- 编辑SSH配置文件:
/etc/ssh/sshd_config,找到PasswordAuthentication项,将其值改为yes。 - 重启SSH服务:
systemctl restart sshd(适用于Ubuntu、CentOS 7+等使用systemd的系统)。
完成后即可用PowerShell或Putty通过用户名+密码直接SSH登录:
ssh your_username@host_ip_address
按提示输入密码即可进入终端。
方法2:生成并配置SSH密钥对
如果服务器强制要求公钥登录,执行以下步骤:
- 在本地PowerShell中生成密钥对:
ssh-keygen -t rsa
一路按回车(无需设置密钥密码也可),执行完成后,你的本地用户目录下会自动生成.ssh文件夹,里面包含id_rsa(私钥,本地保留)和id_rsa.pub(公钥,需上传到服务器)。
2. 用WinSCP将id_rsa.pub上传到远程服务器的~/.ssh/目录下(若服务器无.ssh文件夹,先创建一个)。
3. 在服务器终端(网页控制台或其他可登录方式),将公钥内容追加到授权文件:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 设置正确的权限(否则SSH会拒绝使用密钥):
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
之后即可用PowerShell或Putty直接通过密钥登录服务器。
文件传输协议选择建议
优先使用SFTP协议:
- SFTP基于SSH协议,比FTP更安全,且WinSCP支持SFTP连接,连接成功后可通过顶部菜单栏的「命令」→「打开终端」直接调用SSH终端,传完文件就能立即运行应用。
- 若只能使用FTP,传完文件后仍需解决SSH登录问题才能启动应用。
启动Node.js应用的步骤
- 登录服务器终端后,进入应用上传目录:
cd /path/to/your/node/app
- 安装项目依赖(若项目存在
package.json):
npm install
- 启动应用:
- 临时启动:
node your-entry-file.js(例如node app.js) - 后台持久运行(推荐):先安装进程管理工具
pm2,再启动应用:
npm install -g pm2 pm2 start your-entry-file.js
内容的提问来源于stack exchange,提问作者BakMatComp
相关产品推荐
相关产品推荐

