Windows上SSH免密登录Linux需三步:在PowerShell中用ssh-keygen -t rsa -b 4096生成密钥对(私钥id_rsa本地保管,公钥id_rsa.pub上传);通过scp或手动方式将公钥追加至Linux的~/.ssh/authorized_keys并设chmod 700和600权限;确认sshd_config中PubkeyAuthentication yes且重启sshd服务。

在Windows上实现SSH免密码登录Linux服务器,必须先生成密钥对并正确部署公钥到目标主机,否则每次连接都要手动输密码,效率低且不安全。
用PowerShell生成RSA密钥对
以普通用户身份打开PowerShell(无需管理员权限),直接运行:
ssh-keygen -t rsa -b 4096
按三次回车:第一次确认保存路径(默认为C:\Users\用户名\.ssh\id_rsa),第二次跳过密钥密码(留空即无密码,适合自动化场景),第三次确认空密码。这一步会同时生成私钥id_rsa和公钥id_rsa.pub两个文件。
【私钥绝对不能上传、不能共享、不能截图】它相当于你的数字身份证原件,泄露即等于服务器被接管。
把公钥传到Linux服务器的authorized_keys中
方法一:用scp命令一键推送(推荐)
在PowerShell中执行:
scp ~/.ssh/id_rsa.pub username@server_ip:~/
输入远程账户密码后,公钥文件id_rsa.pub就已上传到服务器用户主目录下。
方法二:用Xshell或MobaXterm等终端登录服务器后手动追加
登录成功后依次执行:
mkdir -p ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
让 Windows 桌面程序在开机时静默自启并隐藏到系统托盘。特别适用于 Flutter、Electron 等无视 VBS/ProcessStartInfo 窗口样式、难以隐藏的顽固应用。提供「VBS 启动器 + Python ctypes/Win32 API」的隐藏窗口方案,可稳定把窗口收进托盘且不闪控制台。
注意:>>是追加写入,不是>覆盖写入,避免误删已有公钥。
设置Linux端SSH目录与文件权限
第一步:给.ssh目录设700权限(仅属主可读写执行)
chmod 700 ~/.ssh
第二步:给authorized_keys设600权限(仅属主可读写)
chmod 600 ~/.ssh/authorized_keys
第三步:检查sshd服务是否允许公钥认证
sudo sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
sudo systemctl restart sshd
如果服务器禁用了密码登录,务必确保公钥已生效再执行PasswordAuthentication no,否则可能被锁死。
在Xshell中配置密钥登录
方法1:新建会话时直接绑定
① 新建会话 → 填写主机IP和端口 → 左侧选“连接”→“SSH”→“用户身份验证”
② “方法”选“Public Key” → “用户名”填Linux上的登录名
③ 点击“浏览”→“导入”→选择本地的id_rsa(注意:是无.pub后缀的私钥文件)
④ 点击“确定”,下次连接就自动走密钥认证
方法2:复用已有会话
右键已保存会话 → 属性 → 连接 → SSH → 用户身份验证 → 同上导入私钥即可。
如果私钥生成时设置了密码,Xshell会在连接时弹窗要求输入——这是正常行为,不是失败。

















