如何从linux机器上将公钥放在sftp服务器上?

时间:2018-01-14 01:29:59

标签: linux ssh sftp

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

2 个答案:

答案 0 :(得分:1)

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

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

注意:,如果需要,您可以选择生成ecdsa类型密钥,但不要使用dsa因为使用dsa密钥已经已被弃用,默认情况下,它们的使用通常会在当前版本的openssh

中停用

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

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

从服务器B完成所有这一切的最简单方法是,在生成密钥后,将0644(或scp)公钥作为服务器A,直接作为{{1}如果您在服务器A上没有其他密钥,或者将您的公钥复制到服务器A并使用rsync和重定向(在附加,而不是截断/替换,模式)将您的公钥添加到现有的{{1文件那里,例如

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

~/.ssh/authorized_keys

如果您要添加到服务器A上的现有cat

~/.ssh/authorized_keys

注意:)在复制到服务器A 时,scp ~/.ssh/id_rsa.pub Server_A:~/.ssh/authorized_keys 附加到公钥名称,以防止覆盖服务器A上的任何现有~/.ssh/authorized_keys 。您现在可以删除服务器A上的scp ~/.ssh/id_rsa.pub Server_A:~/.ssh/id_rsa.pub.B ssh Server_A "cat ~/.ssh/id_rsa.pub.B >> ~/.ssh/authorized_keys" - 它现在位于〜/ .ssh / authorized_keys`)

那就是它。现在来自服务器B的".B"应该没有密码。 (依赖于id_rsa.pub的所有内容在服务器B和A之间没有密码的情况下也可以工作,例如~/.ssh/id_pub.rsa.Bssh Server_A等等。)如果您有任何问题,请使用{{1获取身份验证失败的调试输出。

答案 1 :(得分:0)

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

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

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