如果尚未在系统上安装ssh,需要首先安装Openssh server:
sudo apt-get install openssh-server # 对于Ubuntu/Debian
或者
sudo yum install openssh-server # 对于CentOS/RedHat
ssh-keygen -t rsa # 按提示一路回车
将每个节点上的id_rsa.pub
文件传输到master节点。可以使用scp
进行传输:
scp ~/.ssh/id_rsa.pub 用户名@主机:~/.ssh/id_rsa.pub.nodeName
例如,如果当前是bpa2
节点,命令可以是:
scp ~/.ssh/id_rsa.pub hadoop@bpa1:~/.ssh/id_rsa.pub.bpa2
cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys
scp ~/.ssh/authorized_keys 用户名@其他节点的主机名:~/.ssh/
例如,从bpa1
尝试访问bpa2
:
ssh 用户名@bpa2
如果直接登录成功而不需要密码,则设置正确。
如果是单机部署,你只需在该机器上生成密钥对并将公钥添加到authorized_keys
中:
ssh-keygen -t rsa # 按提示一路回车
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
Q: 如果登录不成功,或仍然需要登录密码,该如何做?
A: 可能需要调整.ssh
文件夹和authorized_keys
文件的权限。确保.ssh
文件夹的权限为700
,而authorized_keys
文件权限为600
:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
此大纲为SSH配置的基本步骤,具体配置细节和操作可能需要根据实际环境进行调整。
Q: 为什么我在尝试SSH连接时收到“Permission denied”消息? A: 这通常意味着你的私钥和公钥没有正确配置,或者你输⼊的密码不正确。 请确保:
~/.ssh/id_rsa
应该是600)。~/.ssh/authorized_keys
文件包含了相应的公钥,并且其权限是600。Q: 我如何在多个节点上设置SSH无密码登录? A: 对于集群中的每个节点,你需要:
ssh-keygen
生成键对(如果还没有的话)。ssh-copy-id
或手动方法将公钥复制到目标节点的~/.ssh/authorized_keys
文件中。Q: 我收到一个关于“host key verification failed”的错误消息。怎么办?
A: 这意味着远程主机的SSH密钥已经更改。这可能是因为系统重新安装或被攻击。你可以从~/.ssh/known_hosts
文件中删除相应的行,然后再次尝试连接。
Q: 如何在集群中同步.ssh
目录?
A: 你可以使用scp
或rsync
命令将.ssh
目录同步到集群中的其他节点。例如:
scp -r ~/.ssh user@remote_node:~/
Q: 我是否应该在所有节点上使用相同的SSH密钥? A: 这取决于你的需求。使用相同的密钥确实可以简化配置,但也可能增加安全风险。最佳实践是为每个节点或用户生成单独的密钥对。
Q: 为什么我不能使用root用户进行SSH登录?
A: 出于安全原因,许多系统默认禁止root用户通过SSH进行远程登录。你可以在/etc/ssh/sshd_config
中检查或更改此设置,但建议使用非root用户进行SSH登录,然后在需要时使用sudo
。