0%

SSH登陆参数

简介

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