`
can_do
  • 浏览: 248088 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Do家】Linux主机间将如何实现非root用户免密访问

阅读更多
一、条件:
1、主机A=>10.114.3.11
2、主机B=>10.114.3.12
3、主机A访问主机B的ssh服务是可达的,但要输入密码;

二、目标:
从主机A访问主机B时,不需要输入密码,即实现免密访问;
例如:用于Jenkins发布时,主机A为Jenkins所在主机,主机B为目标应用部署主机。

三、操作分以下四步:
【1/4】、在主机A上生成rsa公钥和私钥,执行命令【ssh-keygen -t rsa】,并连续3个回车,记着不要有任何交互输入;
[deploy_user@bogon .ssh]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/deploy_user/.ssh/id_rsa):
/home/deploy_user/.ssh/id_rsa already exists.
Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/deploy_user/.ssh/id_rsa.
Your public key has been saved in /home/deploy_user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:6li+uN8Cjnj50BnJojQ0JChPkdgY/XEnO7h+IExbOh4 deploy_user@bogon
The key's randomart image is:
+---[RSA 2048]----+
|+B.o             |
|B = . o .        |
|.= . + +         |
|. +.+.o          |
| =.++. .S        |
|..Eo+o .         |
|.o.Oooo          |
|. =.o*o.         |
| . .=+=o.        |
+----[SHA256]-----+
【2/4】检查主机B上是否存在文件:/home/deploy_user/.ssh/authorized_keys
如果不存在,可以手工创建目录和文件

【3/4】在主机A上执行以下命令,即将主机A的公钥放到主机B的认证keys文件/home/deploy_user/.ssh/authorized_keys中
# cat /home/deploy_user/.ssh/id_rsa.pub | ssh deploy_user@10.114.3.12 'cat >> /home/deploy_user/.ssh/authorized_keys'

【4/4】检查主机A上的文件目录及文件权限
[deploy_user@bogon .ssh]$ pwd
/home/deploy_user/.ssh
[deploy_user@bogon .ssh]$ ll
总用量 16
-rw-------. 1 deploy_user root  399 8月   5 17:47 authorized_keys
-rw-------. 1 deploy_user root 1679 8月   5 21:29 id_rsa
-rw-r--r--. 1 deploy_user root  399 8月   5 21:29 id_rsa.pub
-rw-r--r--. 1 deploy_user root  173 8月   5 17:23 known_hosts
必须按以下权限:建议主机A和主机B都按此权限设置
主机A和主机B都需要:chmod 700 .ssh
仅主机B需要:chmod 600 authorized_keys

四、检查免密访问效果,在主机A上访问主机B的ssh服务;
[deploy_user@bogon .ssh]$ ssh deploy_user@10.114.3.12
Last login: Wed Aug  5 21:28:04 2020 from 10.114.3.11
[deploy_user@bogon ~]$ ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.114.3.12  netmask 255.255.255.0  broadcast 10.114.3.255
        inet6 fe80::bc46:8eb0:fd84:f77b  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:02:0e:01  txqueuelen 1000  (Ethernet)
        RX packets 32221095  bytes 32087996313 (29.8 GiB)
        RX errors 0  dropped 15  overruns 0  frame 0
        TX packets 11917673  bytes 12525092188 (11.6 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 298241928  bytes 27753100908 (25.8 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 298241928  bytes 27753100908 (25.8 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

【小结】
1、采用RSA非对称密码中公钥的机制;
2、两个主机的.ssh权限都必须为700的,而目标主机的authorized_keys权限必须为600;
3、通过RSA生产秘钥对时,不输入校验数据,从而才可以免输入,相当免密了;

【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics