如何在不使用 -i 选项的情况下使用 scp 命令并仍然找到私钥

如何在不使用 -i 选项的情况下使用 scp 命令并仍然找到私钥

我登录到 win2008 框,我scp使用 -i 选项运行,该选项指向私钥所在的 win2008 框中的目录。

scp -i "cygdrive/c/users/userid/privkey..." user@linux:/dirA/dirB/* .

当我在 win2008 机器上运行此命令时,它会登录到 Linux 机器,匹配密钥并将文件发送到 win2008 机器。如果我不指定密钥,它会提示我输入密码。

我使用 ssh-keygen 在 win2008 机器上生成了密钥。我在 winsshd 设置中的公钥下添加了 Linux 密钥。然后我从 ssh-keygen 中获取密钥并将其放在 Linux 机器上。

scp 命令在哪里寻找密钥?如何scp从 win2008 框中运行而不将密钥作为参数传递?

答案1

如果我正确理解了你的问题,有几个选项......

  1. 按照与 SSH 相同的方式设置默认身份文件位置,如此处所述...https://stackoverflow.com/questions/84096/setting-the-default-ssh-key-location

  2. 或者将你的scp命令别名包含修饰符,像这样......alias scp='scp -i /path/of/keyfile'

它们都应该可以工作,但我推荐选项 1,而不是选项 2。这是更正确的方法。

答案2

我想我找到了自己的答案。显然,scp 正在寻找名为 id_dsa 的私钥文件,并且它想要 .ssh 目录中的文件。一旦我在 cygwin 目录结构中找到 home/.ssh(谜题的另一个关键部分),并添加名为 id_dsa 的私钥文件并运行不带 -i 选项的 scp 命令,它就会起作用。感谢大家向我发送“聪明”的氛围,让我能够解决这个问题。不再困惑!我喜欢这里提出的所有建议。感谢您的快速反馈。

相关内容