【问题标题】:Store a private key outside of ~/.ssh将私钥存储在 ~/.ssh 之外
【发布时间】:2015-01-30 02:59:41
【问题描述】:

我必须处理一个相当烦人的情况。我必须使用 scp 通过 shell 脚本将文件从一台服务器传输到另一台服务器。问题是我对它们中的任何一个都没有root访问权限。我不允许安装任何软件包,如 sshpass、ssh2、expect 等。我什至在第二台服务器上必须使用的用户的主目录中没有写权限。

由于我不能使用 sshpass 等来使我的脚本能够输入登录凭据,因此我考虑使用 ssh 密钥对进行身份验证。实际上这是我的第一个想法,但是由于第二台服务器上的用户在其主目录中没有写权限,而只有在后续目录中,ssh-keygen 失败,因为它无法将密钥放入 ~/.ssh。

顺便说一句,两者都是 Debian 服务器。

有没有办法生成 ssh 密钥对并在 ~/.ssh 之外使用它?

非常感谢任何帮助。

【问题讨论】:

  • 你能在目标系统上运行脚本并pull文件吗?

标签: ssh scp ssh-keys


【解决方案1】:

在客户端是的。但是,在服务器端,除非配置不同,否则 sshd 会在该目录中获取您的凭据。

如果您可以从无法访问 .ssh 的服务器 scp 到您可以访问的服务器,则可以使用 -i 选项指定密钥文件位置。

您有替代的传输机制吗?你能把你的public_html文件放在另一边吗?

【讨论】:

    【解决方案2】:

    您可以在任何地方拥有密钥对。关键是密钥对上的权限设置正确。所有权需要设置为用户chown user:user keyfile,权限必须为chmod 400 keyfile

    一旦您移动了密钥并设置了权限,剩下的就是告诉 scp 使用哪个密钥。您可以使用-i 标志来做到这一点。

    IE:scp /source/file user@host:/target/location/ -i keyfile

    编辑: 正如 Amadan 在他的回答中提到的那样 - 这假设您要连接的服务器已经将密钥作为用户的授权密钥。如果不是,则需要 /etc/ssh/sshd_config 更改只有具有正确访问权限的人才能执行。如果您的用户现在完全可以访问它,那么在服务器上尝试 cat /etc/ssh/sshd_config 可能是值得的。如果您具有读取权限,您将能够识别预期的 authorized_keys 位置。服务器管理员可能已经将预期的密钥位置自定义为您具有写入权限的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 2014-06-05
      相关资源
      最近更新 更多