如何在两台不同的服务器上使用 scp 命令而不提示密码?

如何在两台不同的服务器上使用 scp 命令而不提示密码?

我正在尝试使用该scp命令将文件从一台服务器传输到另一台服务器,而无需输入密码。为此我生成了密钥文件并将它们复制到每个服务器的.ssh文件夹中;但是当我运行scp命令时,我仍然需要输入其他服务器的密码。

我正在使用Cloudways服务器;我们无法编辑.ssh这些文件,但我使用他们的门户添加了密钥,并将它们添加到authorized_keys.

我正在使用这个命令:

scp -o StrictHostKeyChecking=no -rv /home/00000000.cloudwaysapps.com/fdbbgbgbgb/public_html/Test1/test.html [email protected]:/home/0000000.cloudwaysapps.com/bgbtrbgb/public_html/Test1

我们需要做什么来自动在两个不同服务器之间进行传输?我已经尝试过了ssh-keygen,但它在服务器上不起作用。我在本地生成了密钥并将其手动添加到两台服务器,使用这些密钥我可以无需输入密码即可登录两台服务器;仅在服务器之间传输文件时才要求我输入密码。

谁能解释为什么会发生这种情况,以及我应该如何在第一个服务器上配置第二个服务器的 SSH 密钥?

答案1

我从本地生成密钥并手动添加到两台服务器,这样我就可以登录两台服务器而无需输入密码,它只是在传输文件时给我密码。

当您在本地计算机和远程计算机之间复制文件,或从本地计算机登录该文件时,您可以设置基于证书的身份验证,并且您确实注意到这已经可以工作了。 (至少,您解释说您可以ssh不需要密码,这几乎是同一回事。)

date >date.txt
scp date.txt remoteHostA:
scp date.txt remoteHostB:

然而,您现在正在做的是在登录到 的情况下从 复制remoteHostA到。现在是客户,你需要这样对待它。remoteHostBremoteHostAremoteHostA

remoteHostA需要使用类似的方法创建 ssh 密钥,并以与从本地计算机安装公钥时相同的方式ssh-keygen -t ed25519传输和安装生成的公钥。remoteHostB

或者,您可以通过本地系统从remoteHostA到传输文件remoteHostB,但您必须登录该系统并从那里运行命令才能使其工作:

scp -3v remoteHostA:date.txt remoteHostB:

-r(只有在复制文件的目录树时才需要该标志。)

相关内容