生产环境ssh登陆策略
生产环境ssh登陆策略
备份:cp /etc/ssh/sshd_config{,.bak}
vim /etc/ssh/sshd_config
17 #Port 22 #修改ssh连接端口38 #PermitRootLogin yes #是否允许root账号远程登陆43 #PubkeyAuthentication yes #是否开启公钥连接认证47 AuthorizedKeysFile .ssh/authorized_keys #公钥文件的放置位置65 PasswordAuthentication yes #是否开启密码验证登陆79 GSSAPIAuthentication yes #是否关闭GSSAPI认证115 #UseDNS yes #是否关闭DNS反向解析修改后17 Port 22221 #工作中需要设定到1万以上的端口,避免被扫描出来。38 PermitRootLogin no #如果不是超大规模的服务器,为了方便我们可以暂时开启root远程登录43 PubkeyAuthentication yes #开启公钥认证模式47 AuthorizedKeysFile .ssh/authorized_keys #公钥放置位置65 PasswordAuthentication no #为了安全我们关闭服务器的密码认证方式79 GSSAPIAuthentication no #关闭GSSAPI认证,极大提高ssh连接速度115 UseDNS no #关闭DNS反向解析,极大提高ssh连接速度
设置xshell私钥登陆Linux
#查看服务器端IP[root@ansible .ssh]# hostname -I192.168.200.183#在Linux服务器端生成rsa密钥对[root@ansible ~]# ssh-keygen #一直回车Generating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:SHA256:royhAEKx9bhe4jLZ3SzfZ/yvhkzPgToDIx+1gSxoOLM root@wwwThe keys randomart image is:+---[RSA 2048]----+| . . || + o || o..... . ||.+ o.. o o ||o =o .. S o . ||oE= +.o= . o . ||.+ +.ooo= = + . || .o. +oo.+ * + || . . o. .= ooo. |+----[SHA256]-----+#将生成的公钥导入到服务器端的~/.ssh/authorized_keys文件里[root@ansible ~]# cd .ssh/[root@ansible .ssh]# lsid_rsa id_rsa.pub[root@ansible .ssh]# cat id_rsa.pub > authorized_keys[root@ansible .ssh]# chmod 600 authorized_keys #权限必须600否则不生效[root@ansible .ssh]# cat authorized_keysssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDS7U4vgjCpWrMFwnWjUlrebldvPw5NNQpnyGT/1cTsyI6ryPm19J+IQ2wNn67BpYz0NKyLjq/hYlSxlQmD7xHwNM5KQirUYPgwPhhDqGuNE+UrBZ2lUkknt358YWGpEC+TUPy/MLNbnIepPpZr0y0qyXmtp7KpeXJwLeKLzZLpHnzA8Vr3A7w/jNaDnQJmKYvDvD0Q6O54CVkkSdxaYPAT1hVfX1pKz0dSNQbJpl5ZJXigQo26M+7qYXeUBxI5Guaapl6uT5sySzTBwwd9Yt49NKE/kIivClegVfHPGF4iSqfCiCd2BTJGTuCVBS2j4lhrjTLyWRO8po7BM4yImRGf root@www#将私钥文件id_rsa复制一份改名为rd_rsa_root并导出到宿主机桌面上[root@ansible .ssh]# lsauthorized_keys id_rsa id_rsa.pub[root@ansible .ssh]# cp id_rsa id_rsa_root[root@ansible .ssh]# lsauthorized_keys id_rsa.pub id_rsa id_rsa_root
查看导入到桌面上的私钥文件

而后xshell显示登陆成功!
用户权限策略
在生产环境中,如果遇到禁止root用户远程登录系统,授权仅普通用户登陆系统,那么需要管理员权限执行sudo提权即可,避免root用户之间登陆
#创建一个普通用户yunjisuan[root@ansible ~]# useradd yunjisuan[root@ansible ~]# echo "123123" | passwd --stdin yunjisuan更改用户 yunjisuan 的密码 。passwd:所有的身份验证令牌已经成功更新。#以root账号授权普通用户yunjisuan所有权限并免输入密码[root@ansible ~]# sed -n '93p' /etc/sudoersyunjisuan ALL=(ALL) ALL#切换到yunjisuan用户测试提权[root@ansible ~]# su - yunjisuan[yunjisuan@ansible ~]$ sudo -l我们信任您已经从系统管理员那里了解了日常注意事项。总结起来无外乎这三点:#1) 尊重别人的隐私。#2) 输入前要先考虑(后果和风险)。#3) 权力越大,责任越大。[sudo] yunjisuan 的密码:匹配 %2$s 上 %1$s 的默认条目:!visiblepw, always_set_home, match_group_by_gid, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin用户 yunjisuan 可以在 ansible 上运行以下命令:(ALL) ALL#测试提权[yunjisuan@ansible ~]$ ls /rootls: 无法打开目录/root: 权限不够[yunjisuan@ansible ~]$ sudo ls /rootanaconda-ks.cfg
配置xshell远程密钥登陆服务器端普通用户
#给yunjisuan普通用户创建公钥认证。注意权限。权限过大,公钥验证会失败[root@ansible ~]# mkdir -p /home/yunjisuan/.ssh[root@ansible ~]# chmod 700 /home/yunjisuan/.ssh[root@ansible ~]# chown yunjisuan.yunjisuan /home/yunjisuan/.ssh[root@ansible ~]# cp ~/.ssh/authorized_keys /home/yunjisuan/.ssh/[root@ansible ~]# chmod 600 /home/yunjisuan/.ssh/authorized_keys[root@ansible ~]# chown yunjisuan.yunjisuan /home/yunjisuan/.ssh/authorized_keys
然后我们xshell远程登陆普通用户到Ansible服务器端
xshell还是用刚才导入的那个私钥文件即可。

然后就登陆成功了。
最后我们关闭Ansible管理服务器端的root账号SSH远程登录功能即可。
#在生产环境我们一般是要禁止服务器root账号远程登录功能的(一旦关闭,密钥和密码登陆方式都不能再登陆)#如果我们想用root账号进行操作,那么远程密钥连接普通用户在切换成root账号即可yunjisuan@ansible ~]$ sudo su -[sudo] yunjisuan 的密码:上一次登录:日 9月 9 21:01:31 CST 2018从 192.168.200.1pts/1 上[root@ansible ~]##关闭Ansible管理服务器的root账号SSH远程登录功能[root@ansible ~]# sed -n '38p' /etc/ssh/sshd_configPermitRootLogin no#重启动sshd服务[root@ansible ~]# systemctl restart sshd
配置Ansible管理服务器sudo审计日志
Centos6.x和Centos7.x的配置方法相同,rsyslog服务是所有日志记录的服务进程
#开启sudo日志[root@ansible ~]# echo "local2.debug /var/log/sudo.log" >> /etc/rsyslog.conf[root@ansible ~]# echo "Defaults logfile=/var/log/sudo.log" >> /etc/sudoers[root@ansible ~]# systemctl restart rsyslog#测试sudo日志记录[root@ansible ~]# exit登出[yunjisuan@ansible ~]$ sudo su -[sudo] yunjisuan 的密码:上一次登录:日 9月 9 21:40:11 CST 2018pts/0 上#查看/var/log/sudo.log日志[root@ansible ~]# cat /var/log/sudo.logSep 9 21:49:12 : yunjisuan : TTY=pts/0 ; PWD=/home/yunjisuan ; USER=root ;COMMAND=/bin/su -
设置SSH免密码登陆
为了避免Ansible下发指令时需要输入被管理主机的密码,可以通过证书签名达到SSH无密码登陆。使用ssh-keygen产生一对密钥,并通过ssh-copy-id命令来发送生成的公钥。
[root@ansible ~]# ls ~/.ssh/authorized_keys id_rsa id_rsa.pub[root@ansible ~]# ssh-copy-id 192.168.200.184[root@ansible ~]# ssh-copy-id 192.168.200.185
当然,我们也可以在控制端主机的hosts文件里直接写入连接方式,用户,密码也能下发指令。但是生产环境不建议这么做。因为这样明文密码容易泄露,另外如果被控制主机修改了密码,这里也需要一起更改,不便于管理。
生产环境ssh登陆策略的更多相关文章
- centos7生产环境下openssh升级
由于生产环境ssh版本太低,导致使用安全软件扫描时提示系统处于异常不安全的状态,主要原因是ssh漏洞.推荐通过升级ssh版本修复漏洞 因为是生产环境,所以有很多问题需要注意.为了保险起见,在生产环境下 ...
- asp.net生产环境和开发环境的错误日志包装策略
对于错误日志的输出,我们借助web.config的两个标志位: <!--全局包装异常处理页面,只有在PageError和Application_Error做清除错误操作才可不跳转--> & ...
- SUSE12Sp3安装配置.net core 生产环境(1)-IP,DNS,网关,SSH,GIT
1.新增用户 sudo useradd 用户名 sudo passwd 用户名 这个时候会提示你输入密码,输入两次密码即可 2.静态 IP 设置 1.设置 IP 地址 sudo vi /etc/sys ...
- .NET持续集成与自动化部署之路第三篇——测试环境到生产环境的一键部署策略(Windows)
Jenkins测试环境到生产环境的一键部署策略(Windows) 一.前言 前面我们已经初步实现了开发集成环境.测试环境的持续集成(自动化构建.自动化测试.自动化部署).但生产环境自动化部署迟 ...
- WebSocket :Nginx+WebSocket内部路由策略推送服务器的实现(附可生产环境应用代码)
1.项目背景 前几天写了一篇WebSocket推送的博客:WebSocket :用WebSocket实现推送你必须考虑的几个问题 支持的连接数大概几千个,具体数量依赖于tomcat能并发的线程数,但很 ...
- linux iptables常用命令之配置生产环境iptables及优化
在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...
- Greenplum 数据库安装部署(生产环境)
Greenplum 数据库安装部署(生产环境) 硬件配置: 16 台 IBM X3650, 节点配置:CPU 2 * 8core,内存 128GB,硬盘 16 * 900GB,万兆网卡. 万兆交换机. ...
- 【Odoo 8开发教程】第二章:Odoo生产环境部署设置
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/10792977.html 一:dbfilter 数据库访问规则设置 一个odoo实例可以连接到不同的数据库实例中 ...
- [转]跳板机Jumpserve的生产环境配置
6.跳板机Jumpserver] Jumpserver是国内一款开源的轻便的跳板机系统,他们的官网:http://www.jumpserver.org/ 使用这款软件意在提高公司内部登录生产环境服 ...
随机推荐
- mysql和oracle分页查询
MYSQL分页查询 方式1: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录.无疑该查询能够实现分 ...
- COMS3200 The RUSH protocol
Part C (50 marks)The RUSH protocol (Reliable UDP Substitute for HTTP) is a HTTP-like stop-and-wait p ...
- 解决 js ajax跨域访问报“No 'Access-Control-Allow-Origin' header is present on the requested resource.”错误
参考页面:https://blog.csdn.net/idomyway/article/details/79572973 如果请求的是PHP页面: header("Access-Contro ...
- String.StartsWith 方法
startsWith() 方法用于检测字符串是否以指定的前缀开始. 语法 public boolean startsWith(String prefix, int toffset) 或 public ...
- javascript的对象内容对比
vue是这样对比的 function looseEqual (a, b) { if (a === b) return true const isObjectA = isObject(a) const ...
- 【做题】POI2011R1 - Plot——最小圆覆盖&倍增
原文链接 https://www.cnblogs.com/cly-none/p/loj2159.html 题意:给出\(n\)个点,你需要按编号将其划分成不超过\(m\)段连续的区间,使得所有每个区间 ...
- sort排序原理
var array = [10,5,40,25,1000,1]; array.sort(compareFunction); function compareFunction(a, b) { ...
- jmeter 学习笔记
beanshell内置对象 vars是针对单线程,使用${varName}访问var变量值 props是所有线程共享,使用${__P(propName,)}访问prop变量值 如何让variable在 ...
- 虚拟现实外包—动点飞扬软件专门承接VR/AR场景、游戏、项目外包
VR外包AR外包公司(虚拟现实外包公司)承接虚拟现实项目开发(企业.教育.游戏.企业大数据展示等) 有VR/AR.Unity3D项目.游戏外包业务欢迎 联系我们 QQ:372900288 TEL:13 ...
- 你有可能不知道的css浮动问题
最近在开发过程中,有的时候会经常遇见明明知道需要这样做,但是为什么要这样做的原因我们却总是不明所以然. 先来解释下什么叫做清除浮动吧: 在非IE浏览器(如Firefox)下,当容器的高度为auto,且 ...