SSH链接密钥部署

Posted skyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH链接密钥部署相关的知识,希望对你有一定的参考价值。

1.在管理机生成密钥

[root@m01 ~]#  ssh-keygen -C 1003451503@qq.com

2.在 管理机 上下发公钥给 nfs服务端

[root@m01 ~]#  ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31

3.管理机 通过ssh命令连接nfs服务器,如果能实现免密码登陆则ok

[root@m01 ~]#  ssh root@172.16.1.31

4.将ssh登陆主机的信息放入一个文件,当我执行文件时就自动的链接到该主机了.....

[root@m01 ~]#  echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@m01 ~]#  vim r_31
[root@m01 ~]#  chmod +x r_31
[root@m01 ~]#  mv /usr/local/bin/r_31
[root@m01 ~]#  r_31

5.将从WIndows下复制好的公钥粘贴至跳板机~/.ssh/authorized_keys中,然后测试

[root@m01 ~]#  cd ; umask 077;  mkdir -p .ssh ; cd .ssh
[root@m01 ~]#  vim ~/.ssh/authorized_keys

SSH安全优化

[root@m01 ~]# vim /etc/ssh/sshd_config              #编辑配置文件

SSH

Port 6666                                      # 修改sshd服务监听的端口                             #减少被扫描到的几率
PasswordAuthentication no          # no代表禁止使用密码的方式连接                   #禁止所有用户使用密码远程连接
PermitRootLogin no                     # no代表禁止root用户直接远程连接
GSSAPIAuthentication no             # 禁止GSS认证,减少连接时产生的延迟
UseDNS no                                   # 禁止ssh进行dns反向解析,影响ssh连接效率参数

END

变更端口为6666,防止别人轻易的被扫描.
root用户无法通过密码登录,也无法通过秘钥登录,总之就是不行.
普通用户仅能通过秘钥登录,无法通过密码登录.
ssh-keygen生成秘钥非交互,注意,如果存在则会提示是否覆盖.
ssh-keygen -P "" -f ~/.ssh/id_rsa

SSH安全防护

fail2ban可以监控系统日志,并且根据一定规则匹配异常IP后使用Firewalld将其屏蔽,尤其是针对一些爆破/扫描等非常有效。

1.开启防火墙

systemctl start firewalld        #开启防火墙
systemctl enable firewalld    #开机自启防火墙
firewall-cmd --state

2.修改firewalld规则,启用Firewalld后会禁止一些服务的传输,但默认会放行常用的22端口, 如果想添加更多,以下是放行SSH端口(22)示例,供参考:

firewall-cmd --permanent --add-service=ssh --add-service=http     #放行SSHD服务端口
firewall-cmd --reload                                                  #重载配置
firewall-cmd  --list-service                                          #查看已放行端口

3.安装fail2ban,需要有epel

[root@m01 ~]#  yum install fail2ban fail2ban-firewalld mailx -y           #安装fail2ban

4.配置fail2ban规则.local会覆盖.conf文件

[root@m01 ~]#  vim /etc/fail2ban/jail.local

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s


[sshd]
enabled = true
filter  = sshd
port    = 22
action = %(action_mwl)s
logpath = /var/log/secure

5.启动服务,并检查状态

[root@m01 ~]#  systemctl start fail2ban.service
[root@m01 ~]#  fail2ban-client status sshd

6.清除被封掉的IP地址

fail2ban-client set sshd unbanip 10.0.0.1

7.如果有ssh秘钥无法正常连接的情况,可以尝试使用如下的调试模式.开启ssh debug调试模式。

(1)31服务器上开启临时ssh服务 /usr/sbin/sshd -p 10001 -d
(2)61服务器上访问 ssh -vvv -p 10001 root@10.0.0.31
(3)31服务器上查看debug日志,发现身份验证被拒绝,目录的所有权错误。
    Authentication refused: bad ownership or modes for directory /root

以上是关于SSH链接密钥部署的主要内容,如果未能解决你的问题,请参考以下文章

SSH基于密钥登录方式部署流程

Capistrano 在部署时要求输入密码,尽管有 SSH 密钥

ssh key密钥认证实现批量分发管理部署

Jenkins环境搭建部署实现代码自动化发布

ssh密钥分发与ansible部署指南

在 Heroku 上安装私有 ssh 部署密钥