我在linux机器A上有一个sftp服务器,我想通过无密码验证来访问它,以便从机器B连接。所以我在机器B上创建了一个ssh密钥对,但我不确定如何复制sftp服务器的pub-key。两台机器都是centos7机器。有人可以说明如何使用命令或脚本将文件复制到sftp服务器,这将允许对sftp服务器(服务器A)进行无密码验证吗?
答案 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.B
,ssh Server_A
等等。)如果您有任何问题,请使用{{1获取身份验证失败的调试输出。
答案 1 :(得分:0)
你可以这样做的一种方法是
$ scp <path to local file> <server address:server path>
或者你可以使用
$ put <path to local file> <server address: server path>