SSH使用部署
2019-10-08 本文已影响0人
吃可爱长大鸭
ssh 远程连接管理服务器 加密传输协议 tcp/22 支持root用户登录
telnet 管理防火墙,路由器... 明文传输协议 tcp/23 支持普通用户登录
ssh相关服务
ssh
ssh root@172.16.1.31 -p 22
ssh 命令
root 用户
@ 分隔符
172.16.1.31 主机ip
p 指定端口
ssh 172.16.1.31
scp
类似于rsync
推:
scp /etc/passwd root@172.16.1.31:/tmp
#本地的/etc/passwd文件 推送到172.16.1.31的/tmp目录下
拉
scp root@172.16.1.31:/tmp/passwd /tmp
#远程服务器/tmp/passwd文件拉取到本地的/tmp目录下
-r 递归传输,如果传输的是目录,需要加-r参数
-l 限速
-p 保持文件属性
-P 指定端口
sftp
sftp root@172.16.1.31 #默认远程机器的/root目录
sftp> get /data/bg.jpg /root/
拉取远程机器/data/下面的bg.jpg文件到本地目录/root下
sftp> put /root/hostname_ip.sh /data
推送本地文件/root/hostname_ip.sh到远程地址的/data目录下
免密登录
#生成秘钥对
ssh-keygen
#传输公钥到需要免密登录的服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub root@172.16.1.31
vim ~/.ssh/authonized.keys 别忘记授权 chmod 600 ~/.ssh/authonized.keys
ssh优化
Port 9292 # 变更SSH服务远程连接端口
PermitRootLogin no # 禁止root用户直接远程登录
PasswordAuthentication no # 禁止使用密码直接远程登录
UseDNS no # 禁止ssh进行dns反向解析,影响ssh连接效率参数
GSSAPIAuthentication no # 禁止GSS认证,减少连接时产生的延迟
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