Windows 使用 ssh 密钥方式登录服务器报错:UNPROTECTED PRIVATE KEY FILE!
Windows OpenSSH 客户端对私钥文件权限要求太宽松,导致拒绝使用该私钥。这是出于安全考虑:私钥必须仅对你(当前用户)可读写,不能被其他用户(包括“Authenticated Users”等组)访问。
takeown /F "D:\keys\id_ed25519"
icacls "D:\keys\id_ed25519" /inheritance:r
icacls "D:\keys\id_ed25519" /grant:r "%USERNAME%:F"
配置如下:
Host usweb
HostName hostdomain
User root
Port 22
IdentityFile D:\keys\id_ed25519
# 下面这几行就是防止长时间不操作被断线的关键
ServerAliveInterval 60 # 每60秒客户端主动发一个空包给服务器
ServerAliveCountMax 3 # 连续3次没回应才认为断了(即最多容忍3分钟无响应)
TCPKeepAlive yes # 开启TCP层保活(大多数系统都支持)
# ExitOnForwardFailure yes # 可选:端口转发失败时立刻退出,防止假死