如何在Linux服务器上配置 SSH key-based 认证登录

 

之前有个服务器,付款有些问题给我停用了。这几天有新买了一个服务器。然后想着就顺便整理一下配置服务器的一些内容。首先一个就是想到了SSH登录时候的问题。因为我的密码太复杂了。所以我就想用SSH key-based的方式登录,避免经常忘记密码的尴尬。从digitalocean上找到一个讲的特别好的教程。我来用大白话翻译一下。

英文链接:https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server

 

首先简单说一下key-based认证的原理(用白点的话说)

大家都知道异步加密,就是用一对密码钥匙,一个公钥,一个私钥。公钥给对方,私钥自己留着。发送的信息用私钥加密,接收到我的信息后,你用我的公钥去解密。 (有兴趣的可以去看下密码学)

这个key-based登录原理呢,就是在我的本地计算机上生成一个SSH钥匙对密码,然后把我的公钥放到服务器。 这样当我ssh登录服务器的时候,服务器就知道是我了,然后我就不再需要去输入我那复杂的登录密码了。

 

具体步骤:

首先,在你的本地计算机上生成一个SSH钥匙对密码,在Terminal里,输入 :

ssh-keygen

随后,会出现这样的画面,告诉你,你的钥匙对放到了哪里。如下:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):

如果你之前已经生成了钥匙对,会问你是否要覆写这个钥匙对,就是是否要冲点原来的信息。(注意:如果要冲掉的话,那么之前的钥匙对用来登录的服务器就会受到影响。)如下:

/home/username/.ssh/id_rsa already exists.
Overwrite (y/n)?

最后让你输入一个passphrase。 这个是个选项,可以为null(直接点两次回车就行)。也可以输入一些方便记录的密码。这个可以理解为,你用这个钥匙对登录的时候,需要的一个密码。(这个密码可以为null,也可以设置一个简单的密码,不推荐太复杂的。不然就失去了用这种方式登录的简便性。因为只有你私钥的人才可以用SSH登录,不然其他人只能用服务器的密码登录。那为啥有这个密码呢?你可以理解,比如有人用了你的电脑,他又知道了你的服务器ip地址。那他一个SSH不就进去了。但是你设置了这个密码,他不就进不去了么。)如图:

Created directory '/home/username/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again: 

最终,配置成功。如图:

Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
|     ..o         |
|   E o= .        |
|    o. o         |
|        ..       |
|      ..S        |
|     o o.        |
|   =o.+.         |
|. =++..          |
|o=++.            |
+-----------------+

然后呢,你要把你的公钥(public key)复制下来。如图:

cat ~/.ssh/id_rsa.pub

公钥的样子大概是这个样子的,如图:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNqqi1mHLnryb1FdbePrSZQdmXRZxGZbo0gTfglysq6KMNUNY2VhzmYN9JYW39yNtjhVxqfW6ewc+eHiL+IRRM1P5ecDAaL3V0ou6ecSurU+t9DR4114mzNJ5SqNxMgiJzbXdhR+j55GjfXdk0FyzxM3a5qpVcGZEXiAzGzhHytUV51+YGnuLGaZ37nebh3UlYC+KJev4MYIVww0tWmY+9GniRSQlgLLUQZ+FcBUjaqhwqVqsHe4F/woW1IHe7mfm63GXyBavVc+llrEzRbMO111MogZUcoWDI9w7UIm8ZOTnhJsk7jhJzG2GpSXZHmly/a/buFaaFnmfZ4MYPkgJD username@example.com

最后把你的公钥放到你的服务器上,即可。 

首先,登录你的服务器,输入:

mkdir -p ~/.ssh

接着,输入:

echo public_key_string >> ~/.ssh/authorized_keys

其中,里面的 public_key_string, 就是我们上面生成的公钥,那个 ssh-rsa AAAAB3N..... 那一大串, 把这个替换上去,回车。即可。

 

对的,没毛病,就这样,你在服务器上配置好了SSH key-based的认证登录。在本地计算机上,输入 ssh username@ip address。然后在输入你上面输入的passphrase就可以了。如果没有passphrase的话,ssh后会直接登录上服务器。

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值