SSH登录是linux最常用的远程登录方式,但是如果只是普通密码,而且允许root远程登录的话是很危险的,很可能引来黑客尝试暴力破解。
ssh的配置文件是/etc/ssh/sshd_config,以下配置修改都是修改这个配置文件,修改前先备份
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
1.修改SSH端口
打开SSH配置文件sudo nano /etc/ssh/sshd_config
将Port参数从默认的22改为其他端口,例如2222。若要立即生效可直接重启sshd服务。
sudo systemctl restart sshd
2.禁用root远程登录
在配置文件中将PermitRootLogin 参数设置为 no即可。在此之前需要新增一个用户名用于远程登录。
sudo adduser newuser sudo passwd newuser sudo usermod -aG sudo newuser
经过这样的设置,黑客不知道用户名也就无从破解了。
3.配置证书登录
若要进一步加固SSH可配置证书,原理是利用非对称加密算法,将公钥放在服务器上,远程时使用私钥文件登录。我习惯在windows上使用putty远程登录,下文以开源的SSH软件putty为例说明。没有putty的先到官网下载,https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
1)生成密钥对
打开putty附带的puttygen,下面Type of key to generate选RSA,下面的number of bits写4096。然后点Generate,接着需要随机移动鼠标,进度条满了就生成完成。如图:
接下去需要保存私钥,这里推荐以密码保存。如果设置密码,使用私钥登录SSH时需要输入密码,如果不设密码只要有私钥文件即可登录。
将密码输入Key passphrase和Confirm passphrase。如果不以密码保存留空即可。点击Save private key,如果不设密码需要在弹窗中确认,再选择路径并输入文件名即可。
2)配置服务器
如上所述,现在我们需要将公钥信息放在服务器上。在puttygen中复制Public key,以ssh-rsa AAAA开头,一直复制到最后。
在服务器上当前用户目录执行
mkdir .ssh #新建目录 cd .ssh #进入目录 nano authorized_keys #新建文件authorized_keys
然后将上述复制内容粘贴到authorized_keys文件中并保存。
接下去打开SSH配置文件,找到或新建PubkeyAuthentication参数并设为yes,然后重启SSH:sudo systemctl restart sshd
3)以证书登录
打开putty,在Host Name输入服务器ip,右边的Port输入修改过的端口。然后在左侧菜单选择Connection-SSH-Auth-Credentials,Private key选项右侧点击Browse,选择刚才保存的私钥ppk文件。再回到最上面的Session,点open。如果保存私钥时未输入密码,此时应可以直接登录,若有密码,则此时需要输入密码后登录。

文章评论