【问题标题】:How to put public key in sftp server from linux machine?如何将公钥从 linux 机器放入 sftp 服务器?
【发布时间】:2018-01-14 12:32:16
【问题描述】:

我在 linux 机器 A 上有一个 sftp 服务器,我想通过无密码身份验证访问它以从机器 B 连接。所以我在机器 B 上创建了一个 ssh 密钥对,但我不确定如何复制那个 pub - sftp 服务器的密钥。两台机器都是centos7机器。有人可以阐明如何使用允许对 sftp 服务器(服务器 A)进行无密码身份验证的命令或脚本将文件复制到 sftp 服务器吗?

【问题讨论】:

标签: linux ssh sftp


【解决方案1】:

Arun,为了让公钥/私钥授权在 Linux 上工作,需要遵守一些关于密钥的手续。主要是服务器 A 上的权限和包含来自服务器 B 的公钥的文件。

首先在服务器 B 上,生成您的公钥和私钥,例如ssh-keygen -t rsa。这将创建具有默认长度(通常为2048 字节)的~/.ssh/id_rsa(您的私钥)和~/.ssh/id_rsa.pub(您的公钥)。您的私钥的权限必须是0600(例如-rw-------

(注意:,如果需要,您可以选择生成ecdsa 类型的密钥,但不要使用dsa,因为dsa 密钥的使用已被弃用,它们的用途是在当前版本的openssh 上通常默认禁用)

为了在没有密码的情况下登录服务器 A,您的公钥必须复制到服务器 A 并且它必须附加到(如果它是第一个密钥,则复制到)~/.ssh/authorized_keys 文件在服务器 A 上。服务器 A 上 ~/.ssh 的目录权限必须是 0700(例如drwx------

注意:其他文件权限可以是0644

从服务器 B 完成这一切的最简单方法是,在生成您的密钥后,将您的公共密钥 scp(或 rsync)提供给服务器 A,如果您没有其他密钥,则直接作为 ~/.ssh/authorized_keys服务器 A 上的密钥,或通过将您的公钥复制到服务器 A 并使用 cat 和重定向(附加,而不是截断/替换,模式)将您的公钥添加到现有的 ~/.ssh/authorized_keys 文件中,例如

如果您在服务器 A 上没有其他公钥

scp ~/.ssh/id_rsa.pub Server_A:~/.ssh/authorized_keys

如果您要添加到服务器 A 上的现有 ~/.ssh/authorized_keys

scp ~/.ssh/id_rsa.pub Server_A:~/.ssh/id_rsa.pub.B
ssh Server_A "cat ~/.ssh/id_rsa.pub.B >> ~/.ssh/authorized_keys"

注意:".B" 在复制到服务器 A 时被附加到公钥名称中以防止覆盖服务器 A 上任何现有的 id_rsa.pub。您可以现在删除服务器 A 上的 ~/.ssh/id_pub.rsa.B -- 它现在在 ~/.ssh/authorized_keys`)

就是这样。现在来自服务器 B 的ssh Server_A 应该可以在没有密码的情况下工作。 (所有依赖于ssh 的东西在服务器 B 和 A 之间也可以在没有密码的情况下工作,例如 scprsync 等...)如果您有任何问题,请使用 ssh -vv Server_A 获取调试输出位置验证失败。

【讨论】:

    【解决方案2】:

    你可以这样做的一种方法是

    $ scp <path to local file> <server address:server path>

    或者你可以使用 $ put <path to local file> <server address: server path>

    【讨论】:

    • 我都试过了,但它们都不起作用,当我尝试 scp 时,我得到了这个“这个服务只允许 sftp 连接”。
    • @Arun 请参阅this
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-06
    相关资源
    最近更新 更多