OK,感觉好久没有更新Blog了,随着时间的增加,我服务器上的内容越来越多了,总感觉每次用ssh连接并用root账户密码登陆委实不太安全,于是网上冲浪得知可以使用安全性更好的密钥进行登录,开始实施。系统为:Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-170-generic x86_64)。

进入.ssh目录下

通过账号密码登录WINSCP后,进入用户名下的文件夹.ssh下,如果没有该文件夹,可以使用mkdir -p /root/.ssh手动创建:

cd /root/.ssh

执行命令创建密钥对

ssh-keygen -t rsa

按照提示进行依次操作,基本上一路回车就可以。

输入ls ,会显示authorized_keys id_rsa id_rsa.pub 三个文件,其中rsa是私钥(敲黑板:这个很重要,不能外泄),pub是公钥。

添加公钥到系统

使用如下命令将公钥添加到authorized_keys 文件中:

cp id_rsa.pub authorized_keys 

使用WINSCP生成.ppk格式私钥

将刚才的私钥拷贝在本地电脑上,返回登录界面,运行PuTTYgen:

载入刚才从服务器保存下来的Xshell生成的密钥,并点击确定。

成功读取后点击Save private key按钮将私钥保存在本地电脑上。

设置使用私钥进行登录。

点击确定保存后登录,即可以通过私钥直接进行登录。最后可以设置ssh配置不允许密码登录。

修改ssh配置文件并重启ssh服务

开启putty,使用vim文本编辑器进入ssh的配置文件:

vim /etc/ssh/sshd_config 

结果应该如下所示:


UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*

# override default of no subsystems
Subsystem       sftp    /usr/lib/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no
#       AllowTcpForwarding no
#       PermitTTY no
#       ForceCommand cvs server
PermitRootLogin yes
PasswordAuthentication yes
UseDNS no

在配置文件中找到PasswordAuthentication yes 设置,这一行的意思是允许使用密码登录,将输入法切换成英文模式,点击“i”,进入插入模式,将“yes”修改为“no”,按“Esc”键回到正常模式,输入“:w”保存修改,再输入“:q”退出,也可以直接输入“:wq”保存并退出。

最后重启ssh服务:

sudo systemctl restart ssh

那么你的云服务器就可以只通过密钥进行登录了。