Debian SSH 端口修改与 CentOS 方法有点不一样,不过原理是一样的。
Debian SSH 端口修改
添加新 SSH 端口
vi /etc/ssh/sshd_config
默认端口为 22,去掉 #Port 22 前面的 # 号,并在其下添加一行 Port 8899
,如下:
Port 22 Port 8899 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress ::
防火墙配置
检查是否安装 iptables
whereis iptables
如有如下输出表示已安装
iptables: /sbin/iptables /etc/iptables.rules /usr/share/iptables /usr/share/man/man8/iptables.8.gz
查看 iptables 状态
iptables -L -n
允许新 SSH 端口通过
iptables -D INPUT -m state --state NEW -m tcp -p tcp --dport 8899 -j DROP
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 8899 -j ACCEPT
保存 iptables 配置
iptables-save > /etc/iptables.up.rules
echo -e '#!/bin/bash\n/sbin/iptables-restore < /etc/iptables.up.rules' > /etc/network/if-pre-up.d/iptables
chmod +x /etc/network/if-pre-up.d/iptables
重启 SSH 服务:/etc/init.d/ssh restart
或者 /etc/init.d/sshd restart
测试使用新的 SSH 端口是否能连接正常使用,确保正常工作进行下一步。
禁用 22 端口
SSH 配置文件删除 22 端口
vi /etc/ssh/sshd_config
Port 22 前面加 # 注释掉,如:
#Port 22 Port 8899 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress ::
防火墙禁止 22 端口
iptables -D INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j DROP
保存 iptables 配置
iptables-save > /etc/iptables.up.rules
echo -e '#!/bin/bash\n/sbin/iptables-restore < /etc/iptables.up.rules' > /etc/network/if-pre-up.d/iptables
chmod +x /etc/network/if-pre-up.d/iptables
重启 SSH 服务:/etc/init.d/ssh restart
或者 /etc/init.d/sshd restart
至此,SSH 端口修改完成。
SSH 配置使用密匙登录
生成密匙
用 root 登录后运行命令:
ssh-keygen -t rsa -b 4096
- 会输入保存密匙文件路径,默认 /root/.ssh/id_rsa
- 接着会提示输入加密密匙文件密码,可以留空,不过建议还是加个密码。再回车,密匙文件就生成完。文件保存在 /root/.ssh/ 目录下,id_rsa 为私钥,id_rsa.pub 为公钥。私钥自己下载到本地电脑妥善保存,公钥可以任意公开。
- 可以使用 FlashFXP 通过 SFTP 方式或者 WinSCP 登录 VPS 下载私钥文件到本地,保存好记得把服务端私钥文件删除。
导入公钥
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
修改 SSH 配置文件
vi /etc/ssh/sshd_config
,找到下面两行:
#RSAAuthentication yes #PubkeyAuthentication yes
把前面的 # 去掉。也可能只有一行,把前面的 # 去掉就好。
#PubkeyAuthentication yes
重启 SSH 服务:/etc/init.d/ssh restart
或者 /etc/init.d/sshd restart
测试使用密匙能否登录 SSH,如果可以,修改 SSH 文件,禁止密码登录。
vi /etc/ssh/sshd_config
,找到下面几行内容:
# To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no
将 #PasswordAuthentication yes 改为 PasswordAuthentication no 然后保存退出。
重启 SSH 服务:/etc/init.d/ssh restart
或者 /etc/init.d/sshd restart
至此,修改 SSH 端口,禁用 22 端口;使用密匙登录 SSH,禁用密码登录修改完成。
Comments:0