从一台服务器到另一台的SCP,无密码提示


19

scp从一个盒子到另一个盒子而不提示输入密码的最佳方法是什么?

有两个服务器:

  • 服务器A(10.152.2.10): /home/oracle/export/files.txt

  • 服务器B(10.152.2.11): /home/oracle/import/

如果我想使用scp服务器A到服务器B 的文件传输,而不会提示输入密码

[从服务器A运行它,/home/oracle/export/]

scp files.txt oracle@10.152.2.11:/home/oracle/import

输入命令后,这将提示我输入密码。

我了解需要生成密钥库并将其复制到服务器A。因此[在服务器A]:

ssh-keygen -t rsa

这给了我两个文件存储在/home/oracle/.ssh

id_rsa
id_rsa.pub

1.我是否应该将两个文件(id_rsaid_rsa.pub)复制到服务器B中/home/oracle/.ssh

在对此进行一些Google搜索时,提到了一些有关将其附加/连接到authorized_keys的文章。

2.我应该自己创建这个文件吗?

我似乎对执行此操作的正确方法感到困惑。

顺便说一句,两台服务器都在运行Suse Linux Enterprise Edition 9。


1
尝试“钥匙串”: gentoo.org/proj/en/keychain

Answers:


16
  1. 不,你要保守id_rsa自己;但是,id_rsa.pub这是您的公共密钥,可以复制到您希望访问的服务器上。将它们连接到的末尾~/.ssh/authorized_keys
  2. 是的,~/.ssh/authorized_keys如果尚未创建,则可以创建;否则,只需使用附加到文件末尾cat id_rsa.pub >>~/.ssh/authorized_keys

11

还有一个工具可以为您排序所有这些ssh-copy-id

如果有一个正在运行的密钥,它将把密钥附加到您的代理中;如果authorized_keys没有正确的权限,它将创建密钥。如果您没有运行代理,则可以指定要使用的键-issh-copy-id -i ~/.ssh/id_rsa


5

您还应该检查各种文件和目录的权限:

authorized_keys needs perms of 600 (chmod 600 authorized_keys)
the .ssh directory should be 700
your home directory should be at most 744

您的主目录不得为您以外的任何人写。


0

如果您配置了从中生成的密钥,ssh-keygen但是仍然无法进行无密码的传输,那么请按照以下详细模式命令验证源计算机上使用的公钥:

sftp -v -oPort=22 userid@server

通常,它指的是与/home/<user>/.ssh/id_rsa.pub 您使用生成的公钥可能不同的公钥ssh-keygen。您需要id_rsa.pub在目标服务器上添加它。


0

我将执行以下操作:

在客户端上:

ssh-keygen -t rsa
ssh-copy-id oracle@10.152.2.11

这会将密钥从客户端复制到服务器。您将需要服务器的密码,以使其将密钥添加到其环中。

  • 需要启用密码验证,或者您需要将密钥文件手动传递到服务器。

在服务器上:

我至少要关闭密码验证。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.