封面图:https://www.pixiv.net/artworks/93665187

客户端生成密钥对

Windows

先在自己电脑的 C:\Users\用户名\.ssh 文件夹下看看有没有图里的两个文件。

自己的电脑操作

如果没有,或者没有 .ssh 文件夹,说明这台机器还没生成公钥-密钥对,需要生成。方法:搜索并打开 CMD,输入 ssh-keygen -t rsa,然后一路回车。出现框框长得像俄罗斯方块,并且 .ssh 文件夹出现两个文件就是生成成功。(如果已经有了这两个文件,不要重新生成!

如果已经有了两个 id_rsa 文件或者生成完毕,在 .ssh 文件夹中用记事本打开 id_rsa.pub,全选并复制里面的内容(也就是自己电脑的公钥),这就是待会要添加到服务器的公钥。

自己的电脑操作

Linux

首先输入

ls $HOME/.ssh -al

如果像下图显示已经存在,就不能继续生成了。(硬是要继续也可以,但是已经生成过覆盖掉会导致以前添加过这个公钥的服务器无法登录)

如果像下图,那就表明还没生成过,可以继续。

然后输入 ssh-keygen -t rsa 并一路回车即可。

之后输入 sudo vim $HOME/.ssh/id_rsa.pub 打开公钥文件,全选并按鼠标右键复制。

公钥添加到服务器

上一步已经复制了客户端的公钥。ssh 连接服务器,输入

sudo vim $HOME/.ssh/authorized_keys

另起一行,粘贴公钥到末尾,保存并退出。

重要

如果服务器的 authorized_keys 第一行有:

no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo 'Please login as the user \"debian_user\" rather than the user \"root\".';echo;sleep 10";exit 142

等类似字样,则需要删除才能远程 ssh 登录。

一般会存在于 root 用户中,允许 root 用户 ssh 远程登录可能会产生安全风险。