如果你购买了一个服务器,那么你肯定是需要远程登陆它的。
ssh密钥登陆就是受推崇的一种方式。它在安全性和便捷性间作出了非常好的折中。
以腾讯云为例。你在购买腾讯云的服务器后,如果你想登陆服务器,那么就需要开放ssh端口。
你可以通过它自带的方式生成一个密钥文件。腾讯云会为你保存名称和公钥,私钥文件需要自己下载保存。
你下载下来的密钥文件的文件名应该是和你所起的名称是一致的。
你可以直接使用这个密钥文件。
使用之前你可能需要先更改这个文件的权限
chmod 400 <文件路径>
修改以后你就可以直接使用以下命令来登陆服务器了。
ssh -i <文件路径> <服务器用户名>@<公网ip>
注意,如果你使用以上方法,那么你的文件名不能改,改了就不行了。
然而这个方式不优雅,也不是我们推崇的。
一般操作系统都会自带~/.ssh
文件夹,如果没有,你可以自己创建一个。
进去后应该会有两个文件,一个是id_rsa
,另外一个是id_rsa.pub
。
这是我们电脑默认的ssh加密文件。如果你曾经使用过git,那么不应该对他们很陌生。
这两个文件各有用处,id_rsa
负责储存私钥,id_rsa.pub
负责储存公钥。
如果你想使用腾讯云给你生成的密钥文件的内容。那么你可以将你之前下载的密钥文件重命名为id_rsa
然后覆盖掉默认的。
然后去腾讯云将公钥复制下来,创建一个id_rsa.pub
的文件,将公钥内容复制进去。然后用你创建的id_rsa.pub
文件覆盖掉默认的。
然后你可能需要更改文件权限
chmod 400 ~/.ssh/id_rsa
这样你就可以使用以下命令登陆服务器了
ssh <服务器用户名>@<公网ip>
如果你不想用腾讯云给你的密钥文件内容。我假设你之前没有密钥文件(因为有密钥文件的操作是包含在没有密钥文件的操作之中的)。
在shell中输入以下命令
# 这是在生成密钥对
ssh-keygen
然后会出现以下提示
Generating public/private rsa key pair.
Enter file in which to save the key ~/.ssh/id_rsa):
这是让你在选择ssh密钥内容的保存位置。而这个文件位置一般就是~/.ssh/id_rsa
,也就是我们期望的默认位置。直接回车。
然后会出现以下提示
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
然后会让你输入两次一个叫做passphrase
的东西,你可以理解是对密钥文件的加密,也就是密钥文件的密码。一般来说直接回车两次就行了,这代表不设置passphrase
。
然后登陆服务器。进入服务器的~/.ssh
目录,使用ls
命令查看其中的文件。里面应该有一个叫做authorized_keys
的文件。这个文件里面存有所有得到登陆授权的公钥。储存格式是每行一个公钥。
我们可以编辑authorized_keys
,然后将自己生成的公钥内容复制进去(记得保存)。
然后我们就可以通过本地的ssh密钥对登陆了。
从这里我们可以看出ssh密钥对的优势和好处。我们可以在服务器的authorized_keys
储存多台电脑的ssh文件的公钥,就可以实现服务器的安全共享。
为了方便,我们每个计算机都只保存一个ssh文件密钥对,也就是id_rsa
与id_rsa.pub
。然后任何需要使用ssh文件的地方都用这个密钥对。这样我们就免去了命令上的麻烦。
ssh命令中的-i
实际上就是使用密钥文件的意思。以后我们登陆任何需要ssh文件的服务器,都直接使用
ssh <服务器用户名>@<公网ip>
就可以了。非常方便。