如何从 Windows 创建 ssh 密钥并使用 OpenSSH 将其安装在 Linux 主机上,以便每次连接无需密码即可登录?
首先,我们需要在 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)
.ssh目录:mkdir ~/.ssh
Run Code Online (Sandbox Code Playgroud)
chmod 700 ~/.ssh
Run Code Online (Sandbox Code Playgroud)
authorized_keys文件:touch ~/.ssh/authorized_keys
Run Code Online (Sandbox Code Playgroud)
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)
| 归档时间: |
|
| 查看次数: |
6779 次 |
| 最近记录: |