L030-老男孩实效教育-ssh key企业批量分发自动化管理案例讲解-14节

本文详细介绍了如何通过SSH密钥实现免密码登录,包括秘钥的生成、权限设置、密钥分发及常见问题解决方案。适用于需要在多台机器间频繁切换的系统管理员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建立秘钥,默认情况下是rsa。

建立的秘钥所在的目录默认是/home/oldgirl/.ssh/id_dsa。

接下来的两步操作是设置密码,可以不设置,直接空格。

查看所有文件中会有一个.ssh。

.ssh下生成两个文件,id_dsa是私钥,id_dsa.pub是公钥。

id_dsa文件的权限比较小,pub的权限大,若权限不对,则设置错误。

默认端口下,使用命令ssh-copy-id -i .ssh/id_dsa.pub oldgirl@10.0.0.100可以分发密钥。特殊情况下使用命令ssh-copy-id -i .ssh/id_dsa.pub "-p 52113 oldgirl@10.0.0.100"分发密钥,出现.ssh/authorized_keys表示成功。

通过修改文件ssh-copy-id下的ssh $1使之变成ssh -p52113 $1。可以直接使用命令ssh-copy-id -i .ssh/id_dsa.pub oldgirl@10.0.0.100分发密钥。

不修改的话,前提是特殊端口情况下,是发送不过去的。

发送成功,显示文件authorized_keys,发送前后名字不一样,并且权限也变了。

使用命令ssh -p22 oldgirl@10.0.0.100直接连接上去,不用输入密码。这样就实现了由一台机器连向两台机器。

在/etc/ssh/sshd_config文件下有.ssh/authorized.keys。就可以免密码进入。

把 scp -P22 a.txt oldgirl@10.0.0.100:~和 scp -P22 a.txt oldgirl@10.0.0.200:~放到文件fenfa.sh中,执行命令sh fenfa.sh可以实现一个简单的分发。

$1表示/etc/hosts下的hosts文件。

scp -rp:-p:保留原文件的修改时间,访问时间和访问权限。-r:递归复制整个目录。

解决ssh连接慢的问题:

如果还慢的话,检查ssh服务端上/etc/hosts文件中,对应ip对应的主机名是否和uname -n的结果一样,或者把本机ip和hostname加入到/etc/hosts里。

ne:不等于的意思。

$# 是传给脚本的参数个数

$0 是脚本本身的名字

$1 是传递给该shell脚本的第一个参数

$2 是传递给该shell脚本的第二个参数
...

关于exit 1:当你 exit 0 的时候,在调用环境 echo $? 就返回0,也就是说调用环境就认为你的这个程序执行正确 当你 exit 1 的时候,一般是出错定义这个1,也可以是其他数字,很多系统程序这个错误编号是有约定的含义的。 但不为0 就表示程序运行出错。 调用环境就可以根据这个返回值判断 你这个程序运行是否ok。 如果你用 脚本 a 调用 脚本b ,要在a中判断b是否正常返回,就是根据 exit 0 or 1 来识别。 执行完b后, 判断 $? 就是返回值

借助脚本取ip,100,200是本机的ip地址,10.0.0.100和10.0.0.200。

 

写一个脚本,向其他两台虚拟机传送文件。

各种参数代表的意思。

以上三幅图是通过一个脚本向目标虚拟机中传送文件的一个过程,其中sh -x fenfa1.sh hosts /home/oldgirl/中-x参数起到了一个调试的作用,然后通过命令sh fenfa1.sh hosts /home/oldgirl/向目标虚拟机发送文件。

如果出现以上情况,用以下方法解决。

此时需要在服务虚拟机中使用命令visudo进行一次提权。在最后边加入oldgirl ALL=(ALL)       NOPASSWD: /bin/cp

修改完之后进行一个检测,进入oldgirl用户,执行命令sudo -l发现有cp命令。

直接用cp命令显示权限不够,这时候用sudo提权就能运行了。

直接执行命令cp hosts /etc发现权限不够,这时候直接用sudo cp hosts /etc就能完成。

把其他两台虚拟机也执行一遍echo "oldgirl ALL=(ALL)      NOPASSWD: /bin/cp" >> /etc/sudoers,然后执行命令visudo -c显示解析正确。

想要使用ssh hostname sudo <cmd>这个命令,有两个方法:
1.使用参数-t,完整命令ssh -t hostname sudo <cmd>。下面的几幅图是例子:

2.把defaults requiretty前面加#引起来。(这样会出现安全隐患,别人也可以远程sudo你的电脑。)

以上三幅图是老男孩老师的上课内容,以下两幅图是我自己的虚拟机写的,差别在不适用-t参数也没有提示错误。还请高手指教,其中10.0.0.20是我的另外一台虚拟机:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值