来自 Windows 的无密码 ssh 连接

Maj*_*ico 3 linux windows ssh

如何从 Windows 创建 ssh 密钥并使用 OpenSSH 将其安装在 Linux 主机上,以便每次连接无需密码即可登录?

Maj*_*ico 5

创建并安装 SSH 密钥

首先,我们需要在 Windows 电脑(我们开始连接的地方)中创建一个新密钥,使用:

ssh-keygen -t rsa
Run Code Online (Sandbox Code Playgroud)

不要更改默认路径或记住保存密钥的位置,它将用于下一个命令。再按两次 Enter 键以避免使用密码(如果您不需要)。

之后,如果您没有更改默认路径,密钥将被创建为{USERPROFILE}\.ssh\id_rsa.pub.

现在,您通常可以使用在远程主机上安装密钥的命令ssh-copy-id,但不幸的是该命令在Windows上不可用,因此我们必须使用以下命令来安装它:

type $env:USERPROFILE\.ssh\id_rsa.pub | ssh {REMOTE_HOST} "cat >> .ssh/authorized_keys"
Run Code Online (Sandbox Code Playgroud)

或者如果您的密钥不在默认路径中:

type {RSA_KEY_PATH} | ssh {REMOTE_HOST} "cat >> .ssh/authorized_keys"
Run Code Online (Sandbox Code Playgroud)

并将其替换{RSA_KEY_PATH}为您的 RSA 路径。

替换{REMOTE_HOST}为远程主机 IP/名称(如 pi@192.168.0.1),启动命令,根据需要插入密码,工作就完成了!

重要的!


设置文件.ssh

如果~/.ssh您的远程主机中不存在该文件夹,则需要配置它们,这通常是通过命令完成的ssh-copy-id,但我们无法从Windows访问此功能!第一次需要用ssh连接远程主机并创建.ssh目录和文件:authorized_keys

ssh {REMOTE_HOST}
Run Code Online (Sandbox Code Playgroud)
  1. 创建.ssh目录:
mkdir ~/.ssh
Run Code Online (Sandbox Code Playgroud)
  1. 设置正确的权限:
chmod 700 ~/.ssh
Run Code Online (Sandbox Code Playgroud)
  1. 创建authorized_keys文件:
touch ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
  1. 设置正确的权限:
chmod 600 ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)

笔记

不是authorized_keys一个文件夹,如果您尝试使用 创建它mkdir,无密码的 SSH 连接将不起作用,并且如果您在主机上调试 ssh,您将注意到类似于以下内容的错误/日志:

~/.ssh/authorized_keys 不是密钥文件。


在您的代理上添加您的 SSH 密钥

在 Windows 电脑上运行这两行,将创建的密钥添加到 cmd/powershell 上:

ssh-agent $SHELL
ssh-add
Run Code Online (Sandbox Code Playgroud)