centos下建立双机信任关系

在有些情况下,我们希望在两台centos机器之间建立ssh连接的时候,可以不用输入密码。最常见的情况就是在使用脚本做数据库备份的时候。这种情况下,我们可以通过公钥/私钥来建立双机之间的信任关系。

网上有些教程中使用的是root账号。如果仅仅是学习和实验,并无不可。但是如果用于实际的环境中,最好还是创建专门的账号。

建立双机信任的步骤很简单。以我们提到的数据备份的场景为例,假设我们有两台机器:source和target。在source上我们创建了用户dataSender,在target上我们创建了用户dataReceiver。

1. 在source的dataSender用户的home目录中(通常是/home/dataSender目录),执行命令

ssh-keygen -t rsa
这个命令会在当前目录下的.ssh目录中生成公钥私钥文件。私钥文件名为id_rsa,公钥文件名为id_rsa.pub。
当然,如果已经有了公钥私钥文件,则可以忽略这一步。
注意在创建密钥文件的过程中,会让你输入passphrase,这个是用来保护密钥的。如果输入了passphrase,那么在执行命令的时候还是需要输入passphrase验证。因此为了方便,我们可以直接输入回车来省略passphrase。当然,不使用passphrase会存在一定的安全风险,只要有人获取了你的密钥文件,就能够直接使用它。另外一种方案就是使用passphrase,但是同时使用ssh_agent来避免输入passphrase。这个在以后介绍。

2.为.ssh目录和密钥文件设置恰当的权限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

3. 将id_rsa.pub文件copy到target的机器上,假设copy到/temp目录下。

4. 使用dataReceiver登录target机器,将上面copy过来的id_rsa.pub文件安装到authorized_keys列表中。

cat /temp/id_rsa.pub >> ~/.ssh/authorized_keys
在authorized_keys中包含了所有dataReceiver用户信任的公钥,每一条是一行。

5. 在target上设置权限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
注意,如果在/etc/ssh/sshd_config中设置了StrictMode(默认是设置了的),那么必须象上面这样配置访问权限。

6.确保设置了正确的SELinux环境

restorecon -Rv ~/.ssh

现在,就可以从source上的dataSender账号下,使用私钥来以dataReceiver的身份登录target了。
ssh dataReceiver@target
ssh会先尝试使用私钥登录,如果没有私钥文件或者私钥文件验证不成功,才会提示输入密码。

题外话:如果想不允许使用密码登录,可以在/etc/ssh/sshd_confg中做如下设置
PasswordAuthentication no

本博客文章除特别声明外,均为本人原创。本着互联网精神,欢迎转载。转载请注明出处
原文地址:https://www.cnblogs.com/afrag/p/6083746.html