远程管理Linux服务器,配置SSH密码和密钥登陆

目录 Linux2022年11月2日

当我们使用Linux服务器之前,我们需要用到一个工具连接管理服务器,SSH或VNC,通常云服务商会给我们一个SSH端口(默认22也可能是其他端口)和root密码这篇文章主要介绍SSH使用方法。

SSH原理

ssh是一种远程登录会话的安全性协议,SSH的客户端适用于多种平台,你可以在Windows上通过SSH工具登陆管理Linux的云服务器。它之所以安全是采用了非对称加密技术(RSA)加密了所有传输的数据。

目前有SSH提供两种级别的安全验证:

口令验证

SSH口令验证

登陆的原理是:SSH客户端发起连接请求,服务端响应向客户端发送公钥,客户端接收公钥并将口令使用公钥加密后传输,服务端使用私钥解密通过验证后建立连接。这就是为什么我们在使用Xshell等工具首次连接服务器时会提示接收公钥的原因。

SSH密钥验证

SSH密钥登陆

使用密钥验证需要一对密钥(公钥和私钥),可以由Linux系统或者本地工具生成,公钥放置在服务器上,私钥放在本地。

原理:客户端请求建立连接,服务端会使用公钥加密一段字符传送客户端,客户端用私钥解密后返回服务端,验证字符是否匹配,通过后建立连接。

修改SSH端口及密码

SSH的默认端口是22,如果不修改的话非常可能被端口扫描到暴力破解密码,修改端口创建一个复杂的密码会更加安全。

下面是我的服务器默认端口下过了几天登陆的数据,可以看到1万多次的失败登陆,已遭受暴力破解,必须修改端口了。

ssh暴力破解

修改SSH端口

vi /etc/ssh/sshd_config

找到 #Port 22 把前面的#删掉,在下面再添加一行新的端口 Port 12345

重启服务ssh服务

systemctl restart sshd

系统开启防火墙的,需要添加放行端口到防火墙
命令:firewall-cmd --permanent --add-port=12345/tcp
重载防火墙
命令:firewall-cmd --reload

测试新端口是否可以连接,可以的话把 /etc/ssh/sshd_config 的 Port 22 删除,这样就只能以新端口登陆了。

修改root密码

方法一:一般服务器的后台面板可以修改root密码,重置即可。

方法二:

root账号登陆服务器,执行

passwd root

按照提示输入新的密码两次。如果用xshell连接的情况下,需要重新验证新的密码。

配置SSH密钥登陆

启用密钥后,可以选择关闭密码访问,是一种更安全的登陆方式。

服务器生成

使用ssh-keygen生成认证所需的公钥和私钥文件。

运行命令
ssh-keygen

系统会询问你文件名和秘钥密码,可以直接跳过,私钥密码在使用私钥时输入,这样就可以保护私钥不被盗用。当然,也可以留空,实现无密码登录。完成后会生成两个文件:
id_rsa 私钥
id_rsa.pub 公钥

执行命令,在服务器上安装公钥:

cat id_rsa.pub >> ~/.ssh/authorized_keys

设置文件权限

chmod 600 authorized_keys
chmod 700 ~/.ssh

修改SSH配置文件,位置:/etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes

是否设定root用户能否通过SSH登陆

PermitRootLogin yes

重启 SSH 服务:

service sshd restart

确认密钥正常登录后,可以选择关闭密码登陆

PasswordAuthentication no

本地登陆时,下载服务器生成的私钥文件,使用Xshell等客户端登陆时用户身份验证选择Public Key,导入私钥,先前设置过私钥密码时需要输入密码,然后登陆即可。

使用Xshell生成

工具→新建用户密钥生成向导→下一步→下一步→输入密钥名称和密码(可为空)下一步→保存公钥文件完成。

使用Xshell生成密钥

以root账户登陆服务器,在root目录下创建 .ssh目录,上传公钥文件到 .ssh目录下,修改名字为authorized_keys,接着按上面步骤修改文件权限和SSH配置文件即可。

暂无评论

发表评论