自己买了个服务器,老是被人给扫描端口登陆。密码总会被破解的,我打算直接把密码登陆给禁用了,反正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