Linux下使用ssh-keygen命令生成SSH密钥对

最近查看Digital Ocean的Droplet登陆日志,经常受到来自江苏连云港一个IP的SSH密码穷举攻击,于是关闭了Droplet的密码登录,改用SSH密钥对登录,杜绝穷举攻击可能。

这种登录方式,需要创建一个新的SSH密钥对(包含公钥和私钥,公钥提供给VPS服务商,私钥用于登录),我们就用Linux系统自带的ssh-keygen命令来生成这个密钥对。

/root/.ssh/目录用来存储Linux系统生成的SSH密钥对,我们首先检查一下,该目录是否为空。

$ cd ~/.ssh
$ ls

若该目录里已经有(filename).pub(filename)这样的同名文件对,则代表已经有生成好的秘钥对。如果不知道已经存在的密钥对的用途,请不要随意覆盖或删除。

我们现在用ssh-keygen命令创建新的密钥对:

$ ssh-keygen

输出如下:

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

注意,此处不要覆盖已经存在的密钥对,我们给新的密钥对一个新的文件名test,如下:

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

然后提示是否要给公钥设置密码,如果不需要密码,留空即可,此处需要确认两次:

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

确认完毕后,会生成密钥对,然后返回公钥的SHA256指纹和randomart image:

Your identification has been saved in /root/.ssh/test.
Your public key has been saved in /root/.ssh/test.pub.
The key fingerprint is:
SHA256:HUN5j/NqUt1A18lLr1jVPf/KIIcTSdk/5KOjJBwJF0M [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|       .E..+  . =|
|      . .o+ o o=*|
|       o ooo B.o=|
|        o.ooo O.o|
|       .S..o B *.|
|        o = B + o|
|         o * = . |
|          o o o  |
|           o     |
+----[SHA256]-----+

现在再检查一下/root/.ssh/目录:

$ cd ~/.ssh
$ ls

输出如下,可以看到我们刚才生成的test密钥对已经在目录里了(test.pub是公钥,test是私钥):

authorized_keys  test  test.pub

用cat命令打印出公钥test.pub的内容:

$ cat test.pub

输出如下,复制公钥内容提供给VPS服务商即可:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCt35H/CTdcJf38j/
xbljWv+TLYS6qpbYm79MDuHtwtjduskzerm4lT6apqlMWS2MOibGE/
pKzIEQRtn7Poi0swXDtqgBTFaji98mI8J918PWkrNuyYZfSascriu8
nXJAxsUX8EcZPkTghzaVBmPK0tHXvX94rxyhPJIbj9eMjeQsb6fsti
kopS2Xt6kM7wCquDTjJrcPa6RrYrPTnpXtWf7K92Yd+yNKFeV4zf9+
UAU/pGo6U4rf7O5sxtzVI08i2Nsbgnm/Jr3rtn/lvAX8M56V1py9L5
76rqpSkmrjyhIC1ssWEUB2Iyelu+B3dwPjFT87hZzog+8Ahu/Oh9Em
oF [email protected]

同理,用cat命令打印出test私钥内容:

$ cat test

将私钥内容保存在本地,另存为test.pem私钥文件。

在使用SSH客户端登陆该VPS时,指定该私钥文件为秘钥即可。
– 若使用Termius:在File – Preference – Keychain中添加新的Key,将私钥内容复制到Private Key区块,登陆时指定该Key即可。
– 若使用Putty:则需要用PuttyGen工具将test.pem私钥文件转换为test.ppk,登陆时指定转换过的新私钥即可。

请注意,测试用密钥对已经被删除,也没有被用于任何SSH链接,破解没有任何意义!

Google Cloud Plattform搭建自用SS服务器教程

参考文档:

  1. Shadowsocks-使用说明
  2. Shadowsocks-Troubleshooting
  3. Shadowsocks-Configuration via Config File
  4. Shadowsocks-Multiple User
  5. shadowsocks on Mac OS X 配置指南

I. 准备工作:

  1. 注册一个Google Cloud Platform一年免费试用账户
  2. 在“计算资源-VM实例”中创建一台位于asia-east1-c地区,基于Ubuntu 16.04的VM实例
  3. 在“网络-外部IP地址”中为这台VM实例配置一个外部静态IP
  4. 在“网络-防火墙规则”中添加SS Server入站端口的白名单规则,端口允许范围设置为all ports
  5. 用Google Cloud Platform自带的SSH工具连接这台VM实例

继续阅读Google Cloud Plattform搭建自用SS服务器教程