Oracle Cloud Ubuntu实例SFTP公钥认证失败求助(SSH可正常连接)
SFTP公钥认证失败解决思路(Oracle Cloud Ubuntu实例)
先核对SFTP命令的核心参数:
-i后面要跟私钥文件(比如id_rsa),不是公钥(id_rsa.pub)。你SSH能连是因为默认调用了~/.ssh下的私钥,而SFTP指定路径时很容易搞混公私钥,先确认这点。严格检查私钥文件权限:Linux对私钥权限要求极高,必须设为600(仅自己可读可写),否则SSH客户端会直接拒绝使用。执行命令修正:
chmod 600 /path/to/your/private_key同时私钥所在的
.ssh目录权限要设为700:chmod 700 ~/.ssh登录服务器检查sshd配置:打开
/etc/ssh/sshd_config,确认以下配置:PubkeyAuthentication yes(必须开启公钥认证)Subsystem sftp /usr/lib/openssh/sftp-server(SFTP子系统路径正确)- 没有针对目标用户的Match规则限制公钥认证
修改后重启sshd:
sudo systemctl restart sshd用调试模式看详细错误:本地执行带
-v参数的SFTP命令,能看到密钥加载、认证的全过程,方便定位具体哪一步出问题:sftp -v -i /path/to/private_key username@public_ip检查服务器端用户的密钥文件权限:登录服务器后,确保目标用户的
~/.ssh目录权限是700,authorized_keys文件权限是600,同时确认文件里的公钥和你本地私钥对应的公钥完全一致,没有多余字符或换行:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys最后确认Oracle Cloud安全列表:虽然SSH能连,但还是检查下安全列表是否允许TCP 22端口的入站流量(默认是允许的,不过排除下这个可能)。
内容的提问来源于stack exchange,提问作者Ahmed Algosaibi
相关产品推荐
相关产品推荐

