禁用ssh密码登陆

Database and Ruby, Python, History


自己买了个服务器,老是被人给扫描端口登陆。密码总会被破解的,我打算直接把密码登陆给禁用了,反正ssh可以通过密钥登陆。

将本机公钥添加到远程主机中

如果本地没有密钥对,先运行ssh-keygen,一路回车下去。

cat ~/.ssh/id_rsa_pub

登陆远程主机,修改authorized_keys,添加本机的公钥。

vi .ssh/authorized_keys

好了,可以退出试试,现在不在需要输入密码了。

禁用密码登陆

vi /etc/ssh/sshd_config
#PasswordAuthentication yes 改为
PasswordAuthentication no

重启生效

systemctl restart sshd.service

禁用ssh 22端口

vi /etc/ssh/sshd_config

#将Port改为2222
Port 2222

修改防火墙

vi /etc/sysconfig/iptabels

添加下面的规则

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT

重启服务

systemctl restart iptables.service
systemctl restart sshd.service

下次登陆请指定2222端口

ssh user@ip -p port

创建新用户并设置密码

useradd cola
passwd cola

创建.ssh目录

mkdir /home/cola/.ssh
vi /home/cola/.ssh/authorized_keys

修正所有者

sudo chown -R cola /home/cola
sudo chown -R cola /home/cola/.ssh

修改权限

sudo chmod 700 /home/cola/.ssh
sudo chmod 600 /home/cola/.ssh/authorized_keys

添加root权限

vi /etc/sudoers
#找到root ALL=(ALL) ALL那一段,在其后添加
cola  ALL=(ALL) NOPASSWD:ALL

禁止root登陆

vi /etc/ssh/sshd_config
Port 22        #开放的端口
PermitRootLogin no        #禁止root登陆
PasswordAuthentication no 

重启

systemctl restart sshd.service