服务器之间,相同帐号,实现免密钥登录

使用场景

1、Client端机器:10.108.0.1

2、Server端机器:10.108.0.2、10.108.0.3、10.108.0.1、10.108.0.4、10.108.0.5

目的:在Client端机器上,SSHServer端机器上,实现相同帐号,免密钥登录。

解决办法:

1、Client端生成公钥和私钥

执行 ssh-keygen -t rsa

[xxx@sdktest01v ~/.ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/xxx/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/xxx/.ssh/id_rsa.
Your public key has been saved in /home/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
b0:b0:77:9a:01:b6:c0:bc:08:05:a2:a1:f4:6d:f9:77 xxx@server-host-1

此时在当前用户的Home目录下 .ssh 子目录里,生成了两个文件

  • 私钥:id_rsa

  • 公钥:id_rsa.pub

2、将生成的公钥给Server端机器

[xxx@sdktest01v ~/.ssh]$ ssh-copy-id  -i /home/xxx/.ssh/id_rsa.pub xxx@10.108.0.2
27
xxx@10.108.0.2's password: 
Now try logging into the machine, with "ssh 'xxx@10.108.0.2'", and check in:

  .ssh/authorized_keys

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

ssh-copy-id:将公钥发到目标服务器上,并生成文件 /home/xxx/.ssh/authorized_keys

3、测试免密钥登录

ssh 10.108.0.2

[xxx@10.108.0.2 ~]$

显示登录成功。

4、无法登录的原因

  • 客户端的私钥和公钥文件位置必须位于 ~/.ssh

  • 确保双方 ~/.ssh 目录,父目录,公钥私钥,authorized_keys 文件,对当前用户至少要有执行权限,对其他用户最多只能有执行权限

  • authorized_keys 文件名确保正确

5、文件目录权限

Client端:

[xxx@10.108.0.1 ~/.ssh]$ ll
总用量 12
-rwx------ 1 xxx xxx 1675 10月 27 17:04 id_rsa
-rwx------ 1 xxx xxx  413 10月 27 17:04 id_rsa.pub
-rwx------ 1 xxx xxx  396 9月  23 10:53 known_hosts

Server端:

[xxx@10.108.0.2 ~/.ssh]$ ll
total 16
-rw------- 1 xxx xxx  413 Oct 27 18:54 authorized_keys
-rw------- 1 xxx xxx 1675 Oct 27 18:54 id_rsa
-rw-r--r-- 1 xxx xxx  413 Oct 27 18:54 id_rsa.pub
-rwx------ 1 xxx xxx  792 Oct 27 18:54 known_hosts

6、BUG

可以和Server机器通信,但是还需要密码登录(CentOS 6系统中复现,涉及ssh-copy-idSELinux

摘录一段E文的原因和解决办法:

When ssh-copy-id creates the authorized keys files it creates it with the proper permissions, but with the wrong SELinux label. 
The fix for this is restoring the labels to their policy defaults using this command:

restorecon -R ~/.ssh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Hadoop 集群中,为了实现节点之间的免密登录,您需要遵循以下步骤: 1. 在每个节点上生成 SSH 密钥对。您可以运行以下命令: ``` ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa ``` 这将在每个节点的 `~/.ssh/` 目录下生成一个 RSA 密钥对文件:`id_rsa` 和 `id_rsa.pub`。 2. 将公钥(`id_rsa.pub`)拷贝到所有其他节点的 `authorized_keys` 文件中。您可以运行以下命令: ``` cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ``` 然后使用 `scp` 命令将 `authorized_keys` 文件拷贝到其他节点上的 `~/.ssh/` 目录下: ``` scp ~/.ssh/authorized_keys user@node2:~/.ssh/ scp ~/.ssh/authorized_keys user@node3:~/.ssh/ ``` 这样,您就可以从一个节点登录到另一个节点,而无需输入密码。 3. 测试 SSH 连接。您可以从一个节点上运行以下命令来测试: ``` ssh user@node2 ``` 如果一切正常,您应该能够在没有要求输入密码的情况下登录到节点 2。 4. 对于 Hadoop 集群,您需要在 `core-site.xml` 文件中指定 SSH 用户和私钥的路径。例如: ``` <property> <name>dfs.ssh.user</name> <value>user</value> </property> <property> <name>dfs.ssh.private.key</name> <value>/home/user/.ssh/id_rsa</value> </property> ``` 这将允许 Hadoop 使用 SSH 连接到其他节点,而无需输入密码。 这些步骤应该能够帮助您在 Hadoop 集群中实现节点之间的免密登录。如果您遇到任何问题,请告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值