更改SSH端口,启用密钥登陆,禁用密码登陆

本教程演示的是ROOT用户关闭密码登陆方式,更换为 Key密钥方式登陆。其他非ROOT用户也差不多,不过 公/私钥 的位置就变了。同时也可以多个服务使用同一个密钥,也避免服务器太多分不清。为了服务器安全,推荐:非22端口+Key密钥登陆+Key密匙密码,这样搭配最安全。

首先确认服务器上是否有现成的密钥

ls -r .ssh

如果又看到id_rsa这种返回结果的话,就代表有现成的密钥,直接输入

cat .ssh/id_rsa

然后将密钥内容复制到电脑上的一个空白txt文件中,保存,名称随意;

若服务器中没有现成密钥则需要自己生成

首先确保你的系统安装了 openssl

openssl -V 
# 正常情况下会返回一大串内容,如果提示 -bash: openssl: command not found 则代表未安装,用下面的命令安装:
# CentOS 系统:
yum install openssl -y 
# Debian/Ubuntu 系统
apt-get install openssl -y

我们执行下面这个命令,就会开始生成 ssh 密钥对(私钥+公钥),根据下面提示来生成。

ssh-keygen
Generating public/private rsa key pair.
 
Enter file in which to save the key (/root/.ssh/id_rsa):
# 输入要保存的密钥文件位置,直接回车 默认即可
 
Created directory '/root/.ssh'.
 
Enter passphrase (empty for no passphrase):
# 输入密钥的密码,可直接回车留空,也可以输入密码来进一步增强安全性(密钥+密码双重保险)
Enter same passphrase again:
# 重复输入一次密钥的密码
 
Your identification has been saved in /root/.ssh/id_rsa.
# 你的私钥位置 /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub.
# 你的公钥位置 /root/.ssh/id_rsa.pub
 
The key fingerprint is:
7c:25:bd:54:f5:fc:60:c0:86:c1:a0:32:7d:8a:80:c4 root@debian
The key's randomart image is:
+--[ RSA 2048]----+
| .o.+..o..|
| o . . o o+ o.|
|. E o . . .o + o|
| . + + o o o.|
| . . S . . .|
| . |
| . |
| |
| |
+-----------------+

生成密钥对后,我们还要在服务器上面配置一下才能使用:

cd .ssh
# 进入 .ssh 目录
 
ls -a
# . .. id_rsa id_rsa.pub
# 查看当前文件夹(/root/.ssh/)下的公钥(id_rsa.pub)和私钥(id_rsa)
 
mv id_rsa.pub authorized_keys
# 重命名公钥(id_rsa.pub)
 
ls -a
# . .. authorized_keys id_rsa
# 再查看一次当前文件夹(/root/.ssh/)下的公钥是否重命名成功
 
chmod 600 authorized_keys
chmod 700 ~/.ssh
# 然后修改密钥文件的权限,避免被其他用户 修改/删除。
# chmod 600 - 只有属主有读写权限。
# chmod 700 - 只有属主有读、写、执行权限。

服务器配置完毕,执行之前取回密钥的操作

cat /root/.ssh/id_rsa

然后我们就需要配置 SSH了,需要开启 Key密钥登陆选项(一般默认都是开启的)

vi /etc/ssh/sshd_config #打开配置文件,找到下面几个参数(改成如下结果)(若找不到,则在文件最后加上缺少的参数即可):
Port  #数字改为为自己设定SSH的端口,不要忘记在防火墙中开启该端口
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
#然后重启SSH:
systemctl restart sshd
#开启端口命令
#firewall
firewall-cmd --zone=public --add-port=(此处填写自己修改后的SSH端口)/tcp --permanent
firewall-cmd --reload #重载firewall

然后我们打开SSH连接客户端,我用的是 Xshell,这里演示如何导入私钥。

首先打开当前会话的属性 —— 连接 —— 用户身份验证 。用户身份验证方法选择 PublicKey ,然后我们点击 浏览 按钮。

SSH1.jpg

在用户密钥管理窗口中,点击 导入 按钮,并选择刚刚我们取回的私钥文件 id_rsa 。选择后会让你输入 私钥的密码,如果你上面生成密钥对的时候设置了密码,那么就输入密码,否则留空。然后点击 确定 按钮继续。

选择你刚刚添加的用户密钥,点击 确定 按钮。(为了识别性好一些,可以重命名一下名称,避免分不清密钥是哪个服务器的)

SSH2.jpg

这时候又回到 用户身份验证设置窗口了,我们填写用户名:root ,密码:用户密钥的密码(若无密码则留空即可),点击 确定 按钮即可。然后我们就可以断开服务器连接,然后重新连接服务器试试(使用密钥连接)。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注

//Microd //Microd