cmd-03 | nano | 文本编辑器 |
cmd-04 | systemctl restart | 重启某个服务 |
conf-01 | /etc/ssh/sshd_config | SSH远程登录程序设置 |
nano
这个文本编辑器打开SSH远程登录程序设置
】,在Windows下,你会【找到文件并双击】,在Linux下该怎么办呢?仔细看看上面的命令说明,是不是就很简单了?没错,就是:# nano /etc/ssh/sshd_config
nano
的界面,稍微观察一下,你会发现,它把重要的快捷键都显示在屏幕下方了(下图红框内),直接开卷考试、不用死记硬背,是不是很贴心呢?Port
这一项,并修改它的端口】。Port后面的数字就是SSH的端口,一般建议把它改成一个大于1024
小于65535
的整数(本文以9753
为例)。请结合nano
的快捷键,想一下该怎么操作呢?果然,你又说对了!就是:ctrl+w
进入搜索模式,然后输入 Port 22
并回车22
并改成 9753
#
,证明这一行【不生效】(被注释掉了),你可像我一样在文件最后写一个不带#
的,或者把#
删掉就好。9753
为例,就意味着随着本文的发布,这个端口会变成一个不大不小的特征,也许会被攻击者优先尝试、也许被GFW干扰、阻断。所以我强烈建议你用一个自己想到的其他端口,毕竟,你有6万多个端口可以自由选择。ctrl+s
。ctrl+o
+ 回车
,退出是 ctrl+x
# systemctl restart ssh
9753
了。所以现在请到PuTTY的设置中修改端口号码,然后保存Session。嗯,你应该知道去哪里改了吧?(如果不知道的话,要重读前面的内容了哦!)root
】的问题。首先你要理解, Linux系统中的root
,不仅仅是一个管理员账号那么简单。它是整个系统的【根基】、是系统的主宰、至高无上的神。一旦root
账号出现安全问题,整个系统都只能任人鱼肉、无处可逃。那么就跟随我进行操作吧:cmd-05 | adduser | 给系统新增用户 |
cmd-06 | apt install | 安装某个软件 |
cmd-07 | visudo | 修改sudo权限设置专用编辑器 |
vpsadmin
为例:# adduser vpsadmin
执行命令后,根据提示操作即可。请务必设置一个用户密码(别忘记设置密码时你时看不到 ******
的)。之后系统会询问你一些用户的附加信息,这些就可以无视,一路回车即可。vpsadmin
为例,就意味着随着本文的发布,这个用户名也会变成一个不大不小的特征,也许会被攻击者优先尝试。所以和端口一样,我强烈建议你用一个自己想到的其他用户名。sudo
功能】(sudo
就是在关键时刻,让普通账户临时获得 root
的神力,战力全开拯救世界)# apt update && apt install sudo
聪明的你大概已经发现,这一行命令其实是两个命令。前一半 apt update
你之前已经见过并且用过了,是去服务器刷新软件版本信息。后面的 apt install
就是这一次要用到的【安装命令】。两条连接在一起,就是让系统去【刷新可用的最新软件,然后安装最新版的sudo
程序】。 &&
则是把两个命令连起来执行的意思。vpsadmin
用户加入sudo
名单里,让他有资格借用root
的神力】# visudo
在 User Priviledge Specification
下加入一行 vpsadmin ALL=(ALL) NOPASSWD: ALL
即可。NOPASSWD
这个设置,它的意思是vpsadmin
用户临时使用root
权限时,不用额外输入密码。这与一般的安全建议相反。我之所以如此推荐,是因为很多新人不顾危险坚持使用root
账号就是因为用root
时不用重复输入密码、觉得轻松。“两害相权取其轻”,我认为【直接用root
用户的风险】大于【使用sudo
时不用输密码的风险】,所以做了以上的建议。如果你希望遵守传统习惯、每次使用sudo
时需要输入密码,那么这一行改成 vpsadmin ALL=(ALL:ALL) ALL
即可。nano
编辑器打开SSH远程登录程序设置
】,什么,你想不起来怎么操作了?那去复习一下上面的内容再回来吧!………… 正确答案:# nano /etc/ssh/sshd_config
PermitRootLogin Yes
这一项,然后把它后面的设定值改为no
即可。还记得怎么操作吗?………… 正确答案:ctrl+w
进入搜索模式,然后输入 PermitRootLogin
并回车yes
并改成 no
ctrl+o
,然后 回车
确认ctrl+x
# systemctl restart ssh
root
用户已无法连接,用户名就要换成vpsadmin
了!方便起见,我们可以在PuTTY中把vpsadmin
设置成默认登录用户名。(啰嗦君:别忘了保存Session)第三步,我们来解决【密码】可能被撞破的问题。
前面我说过,黑客并不是很蠢的用穷举法破解你的密码,而是会用一些比如“密码表”的作弊手段。除非你用的是随机生成的超长密码(比如借助1Password,或者macOS的keychain等密码管理工具),否则很容易中招。
超长随机密码虽然安全性有所提高,但是基本上无法记忆,手动输入也十分麻烦易错。为了解决这个困境,我们可以直接弃用【密码验证】方式,改用更安全的【密钥验证】。
所谓的【密钥验证】,就是生成【一对】相关联的密钥文件(公钥和私钥),然后把【公钥】上传到VPS备用。每次登录时,SSH会将【公钥】和【私钥】进行匹配,若验证是正确的【密钥对】,则验证通过。(换言之,你无需记忆和输入复杂的密码,只要保护好【私钥】这个文件不外泄即可)
那我们现在就来配置【密钥验证】吧!
4.7.1 运行PuTTYgen
(PuTTY密钥生成器)。位置是 开始菜单
–> 所有程序
–> PuTTY (64-bit)
–> PuTTYgen
Generate
开始生成(在界面空白处乱晃鼠标增加随机数)Save public key
保存公钥,文件名为 id_rsa.pub
Save private key
保存私钥,文件名为 id_rsa
(PuTTY私钥自带.ppk
后缀)authorized_keys
。(用vscode保存,默认会变成带txt
后缀的文本文件,这没关系,之后上传VPS时我们会把后缀名去掉)vpsadmin
用户下WinSCP
了。/home/vpsadmin/
文件夹,此时在请点击右下角 X hidden
来显示隐藏文件 .ssh
(注意有一个.
) authorized_keys
上传到.ssh
文件夹内 authorized_keys.txt
改名为 authorized_keys
(去掉.txt
这个后缀名) 4.7.3 在VPS端设置SSH启用RSA密钥验证登录、同时禁用密码验证登录
cmd-08 | sudo | 用root 权限运行某个命令 |
cmd-09 | chmod | 修改目标文件/文件夹的权限 |
authorized_keys
文件权限为 600
(仅所有者可读可写)$ chmod 600 ~/.ssh/authorized_keys
root
变成了普通用户vpsadmin
,此时的我们是没有权限直接编辑SSH配置的。这时候就需要使用sudo
命令了:$ sudo nano /etc/ssh/sshd_config
ctrl+w
) PasswordAuthentication
改成 no
ctrl+w
) PubkeyAuthentication
改成 yes
,然后保存(ctrl+o
)退出(ctrl+x
)sudo
来获得权限)$ sudo systemctl restart ssh
4.7.4 VPS端已经设置好了公钥,现在要给PuTTY指定私钥位置供登录时使用(啰嗦君:别忘了保存Session)
VPS-SERVER
配置后,点击Open
就可以一键登录了。如果你给私钥设置了密码保护,登录时当然还需要输入这个密码才能使用密钥,如下图:
到这里为止,你的VPS已经完成了【端口】、【用户名】、【密码】这三要素的基本安全保障,虽然远称不上固若金汤,但一般的恶意脚本应该已经无法对你造成伤害了!
现在我们终于有了一个安全的系统基础,下一章,我们就可以开始逐步安装配置Xray需要的基础设施了!(什么基础设施呢?一个网页,一张证书)
⬛⬛⬛⬛⬜⬜⬜⬜ 50%