简介 SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。
更换SSH默认端口 (CentOS) 打开文件/etc/ssh/sshd_config,在Port 22
后面添加自定义端口(如端口Port 10000
),为防止端口不生效,先不删除22端口;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. # If you want to change the port on a SELinux system, you have to tell # SELinux about this change. # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER # Port 22 Port 10000 #AddressFamily any AddressFamily inet #ListenAddress 0.0.0.0 #ListenAddress ::
设置防火墙放行10000端口,并重启防火墙和SSH服务;
1 2 3 4 5 6 7 8 # 防火墙放行10000端口 firewall-cmd --zone=public --add-port=10000/tcp --permanent # 重启防火墙 firewall-cmd --reload # 测试端口是否放行 firewall-cmd --zone=public --query-port=10000/tcp # 重启SSH服务 systemctl restart sshd.service
使用10000端口通过SSH登录CentOS,顺利登陆后可以删除/etc/ssh/sshd_config
文件中的Port 22
并重启SSH服务(systemctl restart sshd.service
)。 云服务器需要提前放行10000端口,腾讯云只需打开服务器管理,即可看到防火墙设置;阿里云通过管理-本实例安全组-配置规则添加入方向10000端口。
用法 ssh _name@1.1.1.1_ \[command\]
-p:指定远程服务器上的端口(默认22,建议修改默认端口)
-v:打印更详细信息(出现SSH连接速度慢,可以查看详细信息)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 -1:强制使用ssh协议版本1 -2:强制使用ssh协议版本2 -4:强制使用IPv4地址 -6:强制使用IPv6地址 -A:开启认证代理连接转发功能 -a:关闭认证代理连接转发功能 -b:使用本机指定地址作为对应连接的源ip地址 -C:请求压缩所有数据 -c:选择所加密的密码型式 (blowfish|3des 预设是3des) -e:设定跳脱字符 -F:指定ssh指令的配置文件 -f:后台执行ssh指令 -g:允许远程主机连接主机的转发端口 -i:指定身份文件(预设是在使用者的家目录 中的 .ssh/identity) -l:指定连接远程服务器登录用户名 -N:不执行远程指令 -n:重定向stdin 到 /dev/null -o:指定配置选项 -P:使用非特定的 port 去对外联机(注意这个选项会关掉 RhostsAuthentication 和 RhostsRSAAuthentication) -q:静默模式 -T:禁止分配伪终端 -t:强制配置 pseudo-tty -X:开启X11转发功能 -x:关闭X11转发功能 -y:开启信任X11转发功能 -L listen-port:host:port 指派本地的 port 到达端机器地址上的 port
SSH黑名单 服务器开放ssh端口后,容易被暴力破解,可通过统计登录失败记录禁止IP登录。 将下列代码保存为sh脚本,它读取/var/log/secure文件,将所有登录失败的IP保存在black.list中,失败次数超过三次的IP将会保存在/etc/hosts.deny,这些IP将无法访问服务器的SSH服务。
1 2 3 4 5 6 7 8 9 10 11 12 13 #! /bin/bash cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /home/black.list for i in `cat /home/black.list` do IP=`echo $i |awk -F= '{print $1}'` NUM=`echo $i|awk -F= '{print $2}'` if [ ${#NUM} > 3 ]; then grep $IP /etc/hosts.deny > /dev/null if [ $? -gt 0 ];then echo "sshd:$IP:deny" >> /etc/hosts.deny fi fi done
通过cron计划任务可以定时执行该脚本:
1 2 crontab -e 01 * * * * bash /home/ssh.sh