更多内容你也可以访问
SSH修改登录端口并使用密钥登陆指定用户(非root) - iamtomblackiamtomblack.ml最近在建站后,发现不到2天我的小破站就有600次ssh远程登录的尝试。心中不免一阵寒意,为了解决这个问题特地读取了ssh官方的文档,对网站的ssh登录进行了一些措施。以下命令基于服务器版Ubuntu18.04。
1.涉及的操作
- 非root用户的创建
- ssh默认端口(22)的修改
- ssh密码登录的禁止
- 证书生成和下载
2.ssh登录端口的修改
在root用户下
# vim /etc/ssh/sshd_config
修改
Port 22
为你想要的合法端口,比如
Port 1111
保存并退出
# service sshd restart
重启ssh服务
防火墙配置,root用户下
# ufw status
查看端口,从上到下序号依次递增。
# ufw delete (22端口的序号,应该有2个,一次一个)
注意删除后序号会变。
# ufw allow 1111 (打开你的端口)
3.非root用户的创建以A为例
# useradd -m A
# passwd A
键入你的密码两次
# su A
键入你的密码转为用户A
# cd ~
进入用户A的主目录
经过这些步骤,就会创建一个名为A的用户,并切换到用户A的主目录下
4.创建ssh证书
以ssh官网为准,这里放上官方的文档链接
https://www.ssh.com/ssh/keygen/
在非root用户下,仅仅测试了在非root用户A下的秘钥,这主要是考虑到安全性
# su A
输入你的密码
$ ssh-keygen -t rsa -b 4096
这里会有一个选项需要注意,建议输入一个密码,这个密码在最后使用密钥登陆时需要输入。
Enter passphrase (empty for no passphrase):
会在~/.ssh文件夹里生产一个私钥和公钥,公钥以pub结尾
$ ssh-copy-id -i ~/.ssh/*pub A@your_host
将公钥*pub绑定到登录用户A,发送到你的host_ip,由于是在个人服务器上操作,直接输入本地服务器的外网ip。
5.sshd_config文件的配置
由于需要下载私钥,所以建议先用root用户和修改的ssh端口登录sftp,下载私钥到本地,然后进行下列配置
# vim /etc/ssh/sshd_config
通过“/”找到如下段落并修改如下:
PermitRootLogin no
PasswordAuthentication no
这样就禁止了root用户登录同时也禁止了使用用户名和密码登录的方式。
6.使用私钥登录
对于cilent端,我建议使用MobaXterm,开源且强大
然后输入第4步的密码即可登录。