使用PSCP复制tomcat7至Ubuntu EC2时遇ssh_init: host does not exist错误求助
搞定PSCP的
ssh_init: host does not exist错误 兄弟,既然你已经能用Putty正常连接EC2实例,那实例的网络、SSH配置肯定是没问题的,这个错误基本都是PSCP命令的参数格式不对,或者没明确指定连接所需的关键信息导致的,给你拆解下根本原因和对应的解决办法:
核心原因拆解
- 主机地址识别失败:PSCP不像Putty那样能直接读取你保存的会话配置,如果你用Putty的会话名代替公有IP/域名,大概率会识别失败;另外如果输入的IP多了空格、符号这类错误,也会触发这个提示。
- 缺少连接关键参数:你虽然能在Putty里切换到root,但PSCP不会自动继承这些配置,必须显式指定用户名或者私钥文件的路径,不然它不知道该用什么身份连接目标主机。
- 命令语法搞反了:PSCP对源文件和目标路径的顺序要求很严格,要是把远程主机的位置放错了,也会被当成无效主机处理。
给你两个能用的命令模板
根据你的情况,直接用下面的格式就行:
1. 先用ubuntu用户上传,之后再用root处理文件
这是最稳妥的方式(毕竟EC2默认推荐用ubuntu用户登录):
pscp -i "C:\你的私钥路径\xxx.ppk" C:\本地的tomcat7文件夹路径 ubuntu@你的EC2公有IP:/home/ubuntu/
👉 注意:私钥必须是Putty支持的.ppk格式,如果你只有AWS给的.pem文件,得用PuttyGen转成.ppk才行。
2. 直接用root用户上传(需要先开启root SSH权限)
如果你想直接传到root目录,得先在EC2里开启root的SSH权限:
- 用Putty登录ubuntu用户,切换到root:
sudo su - - 编辑SSH配置文件:
nano /etc/ssh/sshd_config,把PermitRootLogin改成yes - 重启SSH服务:
service ssh restart
之后就能用这个命令上传了:
pscp -i "C:\你的私钥路径\xxx.ppk" C:\本地的tomcat7文件夹路径 root@你的EC2公有IP:/root/
额外要注意的坑
- 别用Putty的会话名代替IP,PSCP不认这个,直接填公有IP或者弹性IP最靠谱。
- 路径里有空格的话一定要用引号括起来,不然会被当成多个参数处理。
- 确保你的本地机器能访问EC2的公有IP(SSH能连的话这个基本没问题,要是不确定可以ping一下,安全组开ICMP就行)。
内容的提问来源于stack exchange,提问作者Santosh Ravi Teja
相关产品推荐
相关产品推荐

