SSH登录配置

本文详细介绍了如何配置SSH,使得本地机器可以登录六台远程服务器,并实现主服务器免密登录其余五台。配置步骤包括生成SSH密钥对,收集并分发公钥,设置~/.ssh/authorized_keys文件权限,创建~/.ssh/config文件,以及更新known_hosts文件。通过这些步骤,简化了多主机之间的交互操作。
摘要由CSDN通过智能技术生成

目标

本地机器一台,服务器六台,配置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 cdhm
        HostName 172.16.23.11
        User root
Host cdh02
        HostName 172.16.23.12
        User root
Host cdh03
        HostName 172.16.23.13
        User root
Host cdh04
        HostName 172.16.23.14
        User root
Host cdh05
        HostName 172.16.23.15
User root
Host cdh06
        HostName 172.16.23.16
        User root

过程记录

# 1. 配置SSH
# 1.1 为六台主机生成密钥对
for i in cdh{01..06}; do
    echo 为主机 $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}; do
    echo 上传公钥到 $i
    cat 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}; do
    echo $i
    cat known_hosts | ssh $i 'cat - >> ~/.ssh/known_hosts'
done
# 1.6 把私钥分发给各自的服务器
# 注:scp 命令会覆盖旧的私钥文件,如果服务器上已经有私钥,就不要复制
for i in cdh{01..06}; do
    scp $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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值