一、条件:
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生产秘钥对时,不输入校验数据,从而才可以免输入,相当免密了;
【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:
分享到:
相关推荐
在 Linux 下,默认情况下1024 以下的端口是要在 root 下才能使用的,在其他用户下,如果尝试使用将会报错。在有的时候,我们可能考虑程序运行在 root 帐户下,但这可能会给 Linux 系统带来安全风险。那如何能够让非 ...
在Linux下安装Mysql(非root) 不用make等复杂的操作 自己安装过程的总结 绝对有效
linux下非root权限的mysql安装
配置无密钥登陆
sudo提权和普通用户免密切换到root详细笔记总结
在一台服务器A上实现对多台机器(SUT,被测机)的批量执行命令,发送文件 使用系统,工具: CentOS 7 pssh(yum install pssh安装):用于批量执行操作,前提是已经配置好了ssh免密登录 sshpass(yum install sshpass...
Linux下破解mysql的root用户密码! Linux下破解mysql的root用户密码!
Ubuntu Linux 默认情况下是不启用root用户的,进入普通用户后,可以通过命令启用root用户
一、概述 为禁止普通用户su至root,需要分别...经过上述配置后,普通用户将被禁止su至root,如果希望指定普通用户su至root,可以执行如下命令将该用户添加至wheel组中: usermod -G wheel username 三、示例 [root@t
NULL 博文链接:https://listen-raining.iteye.com/blog/2316558
# 前言:为什么要使用非root用户运行tomcat root用户启动tomcat有一个严重的问题,那就是tomcat具有root权限。 这意味着你的任何一个页面脚本(html/js)都具有root权限,所以可以轻易地用页面脚本 修改整个硬盘里的...
linux下添加用户并赋予root权限
限制用户root远程登录,对保证计算机系统的安全,具有实际意义。本文向大家介绍一些方法,能达到限制root远程登录的目的。
禁止普通用户su到root,简洁可靠。推荐服务器维护管理人员熟知
http://blog.whatsroot.xyz/2014/11/20/root-install/ linux 下的ROOT安装教程,与博客内容一致,建议直接访问博客内容.ROOT是cern开发一款开源数据处理软件
linux无网络无root环境安装,包含nginx/pcre/zlib
本人在网上查询了好多资料,经过两天的实验终于得出正确的安装步骤。安装步骤: 查询以前安装的mysql相关包 rpm -qa | grep mysql 暴力删除这个包 rpm -e mysql-libs-5.1.66-2.el6_3.i686 --nodeps ...
非root权限如何读写Linux文件.pdf
linux忘记ROOT密码的解决办法,简单实用
CentOS6.7下使用非root用户(普通用户)编译安装与配置mysql数据库并使用shell脚本方式实现数据库随机自动启动!