SSH登录配置

目标

本地机器一台,服务器六台,配置SSH登录
配置完成后:

  1. 本地可以登录六台主机,
  2. 主服务器(cdh01)可以免密登录其余五台主机,其余五台主机不能免密登录主服务器。
  3. 可以使用ssh cdh01, ssh cdh02作为主机名代替ip地址登录指定机器
    具体要进行如下配置:
     六台主机各自一对ssh密钥对(root用户下)。用于登录其它主机。
     主服务器的/.ssh/authorized_keys(root用户)保存本地主机的公钥。其余五台主机的/.ssh/authorized_keys保存主服务器和本地服务器的ssh公钥。
    这个文件中保存的公钥,允许持有对应私钥的服务器免密登录本主机。该文件的权限必须是600,如果权限放宽,就不具有免密登录效果。
     每台主机的~/.ssh/known_hosts 都保存了其余五台主机的密钥指纹。(可选)
    主机A登录主机B,第一次登录的时候,A会询问B的指纹是否正确,选择是则继续登录并把B的指纹保存在A自身的~/.ssh/known_hosts文件中。
    为了省去第一次登录的询问过程,使用ssh工具提前添加进来。
     在五台机器的~/.ssh/config中添加如下配置
Host cdh01 cdhmHostName 172.16.23.11User root
Host cdh02HostName 172.16.23.12User root
Host cdh03HostName 172.16.23.13User root
Host cdh04HostName 172.16.23.14User root
Host cdh05HostName 172.16.23.15
User root
Host cdh06HostName 172.16.23.16User root

过程记录

# 1. 配置SSH
# 1.1 为六台主机生成密钥对
for i in cdh{01..06}; doecho 为主机 $i 生成 ssh 密钥ssh-keygen -b 2048 -f $i  -N "" -q -C "(root@$i)" > /dev/null
done
# 1.2 收集本地ssh公钥和主节点服务器的公钥
cat ~/.ssh/id_rsa.pub > keys.pub
cat cdh01.pub >> keys.pub
# 1.3 把公钥上传到六台服务器上的 ~/.ssh/authorized_keys 文件
for i in 172.16.23.{11..16}; doecho 上传公钥到 $icat keys.pub | ssh root@$i 'mkdir ~/.ssh -p; cd .ssh; cat - > authorized_keys; chmod 600 authorized_keys'
done
# 1.4 配置本地ssh
cp assests/cdh.conf ~/.ssh/
echo include cdh.conf >> ~/.ssh/config
# 1.5 搜集六台主机的指纹, 安装到六台机器上以及本机上
ssh-keyscan -t ecdsa,ed25519,rsa,dsa 172.16.23.{11..16} > known_hosts
# 1.5.1 先安装到本地机器
cat known_hosts >> ~/.ssh/known_hosts
# 现在本地可以登录六台机器,测试
for i in cdh{01..06}; do ssh $i "echo 登录 $i 成功"; done
# 1.5.2 再把 known_hosts 安装到六台服务器上
for i in cdh{01..06}; doecho $icat known_hosts | ssh $i 'cat - >> ~/.ssh/known_hosts'
done
# 1.6 把私钥分发给各自的服务器
# 注:scp 命令会覆盖旧的私钥文件,如果服务器上已经有私钥,就不要复制
for i in cdh{01..06}; doscp $i "$i:~/.ssh/id_rsa"scp $i.pub "$i:~/.ssh/id_rsa.pub"ssh $i "chmod 600 ~/.ssh/id_rsa"
done# 1.7 完成,收工,清理现场
rm cdh* known_hosts keys.pub


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部