我登录到 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
如果我正确理解了你的问题,有几个选项......
按照与 SSH 相同的方式设置默认身份文件位置,如此处所述...https://stackoverflow.com/questions/84096/setting-the-default-ssh-key-location
或者将你的
scp
命令别名包含修饰符,像这样......alias scp='scp -i /path/of/keyfile'
它们都应该可以工作,但我推荐选项 1,而不是选项 2。这是更正确的方法。
答案2
我想我找到了自己的答案。显然,scp 正在寻找名为 id_dsa 的私钥文件,并且它想要 .ssh 目录中的文件。一旦我在 cygwin 目录结构中找到 home/.ssh(谜题的另一个关键部分),并添加名为 id_dsa 的私钥文件并运行不带 -i 选项的 scp 命令,它就会起作用。感谢大家向我发送“聪明”的氛围,让我能够解决这个问题。不再困惑!我喜欢这里提出的所有建议。感谢您的快速反馈。