如何让两台 Linux 机器互相接受 ssh 连接而不要求输入密码

如何让两台 Linux 机器互相接受 ssh 连接而不要求输入密码

我需要创建一个 cron 脚本,该脚本会将所有日志从一台机器复制到一台日志解析机器,但是当我 scp 时,系统要求我输入密码。通常,当我使用 Putty 连接到服务器时,我会使用pageantPutty 来允许代理转发,当我选择要连接的机器时,它会打开一个 putty 窗口并直接带我进入 shell,而无需输入密码。在我将我的 rsa 公钥插入每台机器上的 .ssh/authorized_keys 文件后,就会发生这种情况。

我想在两台服务器之间做同样的事情。

编辑:我不知道为什么它被否决了……我认为这是一个合理的问题。请告诉我我做错了什么:

[root@search-uk-1 .ssh]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
ca:ab:4d:95:a4:ee:47:67:0c:e1:23:f3:73:46:67:7e [email protected]
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|        .        |
|       ...       |
|      oo+.. o    |
|      .+S= +     |
|     o o+ * . E  |
|      =. *   .   |
|     + ..        |
|    ..+.         |
+-----------------+
[root@search-uk-1 .ssh]# ssh-copy-id root@sawmill
root@sawmill's password:
Now try logging into the machine, with "ssh 'root@sawmill'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

[root@search-uk-1 .ssh]# ssh root@sawmill
Enter passphrase for key '/root/.ssh/id_rsa':
Last login: Mon Nov  5 11:32:33 2012 from search-uk-1.int.incredimail.com
[root@sawmill ~]# exit
logout
Connection to sawmill closed.
[root@search-uk-1 .ssh]# ssh root@sawmill
Enter passphrase for key '/root/.ssh/id_rsa':

即使我从 .pub 文件复制 rsa 密钥并将其粘贴到远程机器的 .ssh/authorized_keys 上,它仍然会不断要求我输入密码。

谢谢

答案1

这很简单。在机器上生成你的 rsa_idssh-keygen -t rsa

之后只需执行ssh-copy-id login@secondmachine输入密码即可。之后您应该能够从一台机器无密码登录到另一台机器(如果您想在两台机器上都无密码登录,那么您应该在第二台机器上执行相同的步骤)。

但也许你应该考虑使用 rsync 来完成这项工作。在 cronjobs 中使用 rsync 密码非常简单,只需使用环境变量 USER 和 RSYNC_PASSWORD。将其放入你的脚本中


export USER=nameofrsyncuser
export RSYNC_PASSWORD=password

此后,任何 rsync 命令都将使用这些变量。这样更安全,因为 rsync 用户不是系统用户。您必须配置 rsync 服务器,但这非常简单。并且,您可以在 rsync 配置中使用 host allow 指令来保护 rsync 共享。

答案2

在每台服务器上运行用户帐户ssh-keygen(注意不要覆盖)。这将在 ~/.ssh 中生成公钥和私钥。获取默认名为 id-rsa.pub 的密钥并将其放入另一台服务器的 ~/.ssh/authorized_keys 文件中。反之亦然。

相关内容