我已经安装了 openSSH 作为最新 cygwin 发行版的一部分。我的目标是使用本机窗口控制台 (cmd) 中的 ssh-agent 来在各种 Linux 机器上进行无密码登录。
我已经生成了密钥并将其上传到远程主机中的相应目录,一切正常。
我唯一的问题是每次打开新 cmd 时,我都必须运行“ssh-add”,输入密码,然后才能无密码登录远程主机。有没有办法解决这个问题?理想的解决方案是只运行一次 ssh-add。
仅供参考:我将 cmd 作为 ssh-agent 的参数打开:'ssh-agent cmd'
答案1
我实际上创建了一个名为“ssh-agent-helper”的工具,它可以ssh-agent
全局调用并使其可用,这样,您就可以使用ssh-add
,ssh
或git
从任何终端(例如 CMD、Bash、PowerShell 等)无需任何配置。
答案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