解决云服务器被攻击尝试登陆的问题

日狗!当前我这台云主机,每次连上都有如下提示(各种被扫描和攻击…)

1
2
3
Last failed login: Tue Dec 12 07:55:36 CST 2019 from 219.146.144.254 on ssh:notty
There were 14011 failed login attempts since the last successful login.
Last login: Mon Dec 11 09:23:25 2017 from 180.110.80.73

研究后发现两种办法可以解决这个问题。以下内容为在Centos7下操作。s

方法A: 设置SSH密钥登陆

ssh登陆原理简单说明:

公钥相当于锁,私钥相当于钥匙。

生成公钥和私钥,并把公钥上传到服务器。以后在客户端登陆时,就可以使用私钥来进行验证。不再需要用户名和密码登陆 ,大大提高了服务器安全性。

1.生成ssh密钥

首先确保服务器已经装了ssh服务,现在linux服务器都自带吧。

1
ssh-keygen -t rsa 

这里使用rsa算法,-t用于指定加密算法。

然后Enter passphrase (empty for no passphrase):选择默认直接回车无密码

查看生成的密钥:

1
2
3
4
5
[root@centos ~]# ll /root/.ssh/
total 8
-rw-------. 1 root root 1831 Feb 25 07:11 id_rsa
-rw-r--r--. 1 root root 402 Feb 25 07:11 id_rsa.pub

id_rsa是私钥,id_rsa.pub是公钥

2.把公钥存到默认ssh密钥位置。 /当前用户/.ssh/authorized_keys

1
2
3
[root@centos ~]# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys #将公钥追加到keys文件中,注意是追加.因为keys文件中可能记录了多个公钥.
[root@centos ~]# chmod 600 /root/.ssh/authorized_keys #将权限改为只有当前用户可读可写,保证安全.
[root@centos ~]# cat /root/.ssh/authorized_keys #查看公钥

3.打开ssh服务器的密钥登陆功能

修改SSH的配置文件/etc/ssh/sshd_config :

1
2
3
4
[root@centos ~]# vi /etc/ssh/sshd_config
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

去掉上面3行前面的#,保存后重启SSH服务。

1
[root@centos ~]# systemctl restart sshd.service

4.使用windows下的ssh客户端配置密钥连接服务器

下载公钥和私钥到客户机
必须两个文件都下,且要放到一个目录下。(有些ssh工具只要私钥就行)

我这使用windows scp(ftp软件)将密钥文件下载到本机。
(所有工具都大同小异,我用的是免费的xshell)
新建一个会话,并选择public-key的方式连接。

浏览选择刚下载的私钥文件点击确定,然后就登陆成功!

5.关闭密码登录

修改SSH的配置文件/etc/ssh/sshd_config :

1
2
[root@centos ~]# vi /etc/ssh/sshd_config
PasswordAuthentication no

保存后重启SSH服务。

1
[root@centos ~]# systemctl restart sshd.service 

方法B:修改ssh的默认端口改到一个不为他人知道的端口

1.添加一个不为他人知道的端口

1
2
[root@centos ~]# firewall-cmd --zone=public --add-port=XXXXX/tcp --permanent #防火墙XXXXX端口打开(移除add改成remove)
[root@centos ~]# firewall-cmd --query-port=XXXXX/tcp --zone=public #查询端口是否开启

重启防火墙

1
[root@centos ~]# systemctl restart firewalld 

2.修改SSH的配置文件/etc/ssh/sshd_config :

1
2
3
[root@centos ~]# vi /etc/ssh/sshd_config
Port 22
Port XXXXX #加一个不为他人知道的端口

保存后重启SSH服务。

1
[root@centos ~]# systemctl restart sshd.service 

大功告成!
再也不用看到登陆尝试失败的提示了。

完结!

添加SSH公钥到GitHub账户

如果有已连接主机

1.旧主机保留在user/.shh目录下的id_rsa id_rsa.pub两个文件拷贝到新主机
2.新主机删除user/.shh目录下的knowhosts文件对应的github远程主机公钥
3.新机重新部署

全新连接

要添加SSH公钥到GitHub账户,请按照以下步骤操作:
1.检查是否已有SSH公钥。在命令行中输入以下命令,查看是否已有SSH公钥存在:

1
cat ~/.ssh/id_rsa.pub

如果提示”No such file or directory”,则需要生成一个新的SSH公钥。
2.生成新的SSH公钥。如果没有现有的SSH公钥,可以使用下面的命令生成一个新的:

1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

用你的GitHub注册邮箱替换”your_email@example.com“。
3.将SSH公钥添加到GitHub账户。首先复制SSH公钥到剪贴板:

1
cat ~/.ssh/id_rsa.pub | clip

或者在macOS中:

1
pbcopy < ~/.ssh/id_rsa.pub

然后登录GitHub网站,点击右上角的用户头像,选择”Settings”,在侧边栏选择”SSH and GPG keys”,点击”New SSH key”,在弹出的界面粘贴你的SSH公钥,并填写标题。
4.测试SSH连接。输入以下命令来测试SSH连接是否成功:

1
ssh -T git@github.com

如果看到类似于 “Hi username! You’ve successfully authenticated, but GitHub does not provide shell access.” 的消息,说明SSH设置成功。
以上步骤完成后,你就可以通过SSH进行安全的Git操作了。