我正在尝试使用该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
到。现在是客户,你需要这样对待它。remoteHostB
remoteHostA
remoteHostA
您remoteHostA
需要使用类似的方法创建 ssh 密钥,并以与从本地计算机安装公钥时相同的方式ssh-keygen -t ed25519
传输和安装生成的公钥。remoteHostB
或者,您可以通过本地系统从remoteHostA
到传输文件remoteHostB
,但您必须登录该系统并从那里运行命令才能使其工作:
scp -3v remoteHostA:date.txt remoteHostB:
-r
(只有在复制文件的目录树时才需要该标志。)