从一台服务器到另一台服务器的 SCP 没有密码提示

20 ssh scp key-authentication

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
Run Code Online (Sandbox Code Playgroud)

这会在输入命令时提示我输入密码。

我知道需要生成一个密钥生成器并将其复制到服务器 A。因此 [在服务器 A]:

ssh-keygen -t rsa
Run Code Online (Sandbox Code Playgroud)

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

id_rsa
id_rsa.pub
Run Code Online (Sandbox Code Playgroud)

1. 我应该将两个文件 ( id_rsa, id_rsa.pub)复制到服务器 B 中/home/oracle/.ssh吗?

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

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

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

顺便说一句,两台服务器运行的是 Suse Linux Enterprise Edition 9...

小智 16

  1. 不,你只管id_rsa自己;但是,id_rsa.pub作为您的公钥的 可能会被复制到您希望访问的服务器上。将它们连接到~/.ssh/authorized_keys.
  2. 是的,~/.ssh/authorized_keys如果尚未创建,您可以创建;否则,只需使用cat id_rsa.pub >>~/.ssh/authorized_keys.


mau*_*ion 11

还有一个工具可以为您整理所有这些,称为ssh-copy-id.

如果您有一个运行到该authorized_keys文件的密钥,它将在您的代理中附加密钥,如果它不存在并具有正确的权限,则创建它。如果您没有运行代理,则可以指定要推送的密钥-issh-copy-id -i ~/.ssh/id_rsa


dr-*_*jan 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
Run Code Online (Sandbox Code Playgroud)

您的主目录不能被除您以外的任何人写入。