在 Windows 7 中打开 openssh,为所有 cmd 实例运行一次 ssh-add

在 Windows 7 中打开 openssh,为所有 cmd 实例运行一次 ssh-add

我已经安装了 openSSH 作为最新 cygwin 发行版的一部分。我的目标是使用本机窗口控制台 (cmd) 中的 ssh-agent 来在各种 Linux 机器上进行无密码登录。

我已经生成了密钥并将其上传到远程主机中的相应目录,一切正常。

我唯一的问题是每次打开新 cmd 时,我都必须运行“ssh-add”,输入密码,然后才能无密码登录远程主机。有没有办法解决这个问题?理想的解决方案是只运行一次 ssh-add。

仅供参考:我将 cmd 作为 ssh-agent 的参数打开:'ssh-agent cmd'

答案1

我实际上创建了一个名为“ssh-agent-helper”的工具,它可以ssh-agent全局调用并使其可用,这样,您就可以使用ssh-addsshgit从任何终端(例如 CMD、Bash、PowerShell 等)无需任何配置。

你可以在这里找到它:https://github.com/raeesbhatti/ssh-agent-helper

答案2

您将无法从本机命令窗口运行 ssh。您需要运行 Cygwin bash“窗口”才能运行任何 Cygwin 二进制文件。

话虽如此,在 Cygwin bash“窗口”中,您需要将 ssh-agent 的输出保存到一个文件中,然后将该文件放入您想要使用缓存凭据的任何登录脚本中。在第一个“窗口”中,运行:

$ ssh-agent >your_save_file     # Starts ssh-agent, saves shell variables
$ . your_save_file              # Loads saved shell variables into current shell
$ ssh-add                       # Adds keys into ssh-agent

在其他每个程序中运行:

$ . your_save_file

运行该命令后启动的所有“窗口”和子进程. your_save_file都将能够使用 ssh-agent 中缓存的凭据。每次 ssh-agent 停止或终止时,或者系统重新启动后,您都需要再次运行第一组命令。如果您不确定缓存的凭据是否在特定 shell 中可用,请运行

$ ssh-add -l            # Show list of loaded keys in ssh-agent

相关内容