设置 SSH 通过公钥登录及保持连接活性
每次登陆自己的 VPS
都要使用密码去登陆,虽然密码被自己降低难度了,但是总要输入密码登陆有点繁琐,且长久看来一机一密码是比较靠谱的设置。在此基础上添加了几个常用的 SSH Trick ,比如保持 SSH 连接活性以及连接复用。
注:本文所有环境皆基于 Linux 。
0x01 Generate The Key
首先在本机上生成一对 公钥
& 密钥
,后者必须自己保存好、不可随意分发公布,前者不仅可以用于普通的 Linux
服务器登录,还可以用于 Github
和 PGP
等服务。
输入以下命令,意思是生成一对 RSA
的公钥密钥,指定密钥长度为 4096 bits
。
1 | ssh-keygen -t rsa -b 4096 |
在现有算力的情况下,4096bits
长度的密钥对是无法计算出来的,除非生成密钥的方式有漏洞或者后门,不然就是相对安全的。
一般情况下全按 回车
既可,让密钥放置在默认位置 /Users/[YOUR_USER_NAME]/.ssh/id_rsa
既可。
如果要求更加安全,可以在 Enter passphrase
这里设置使用密码,即每次使用这个密钥都需要输入你设置的密码。
0x02 Use The Key
生成完 Key
之后,我们需要在服务器上进行配置。配置分两步,一个是写入 authorized_keys
,另一个是开启 证书登录支持
。
写入 authorized_keys
在 本机(Local)
输入以下命令:
1 | cat ~/.ssh/id_rsa.pub |
然后复制上述内容(即生成的公钥),然后写入 服务器(Server)
的 authorized_keys
文件中并设置权限控制。
1 | cd ~ |
开启服务器支持
使用 vim
编辑文件 /etc/ssh/sshd_config
修改一下内容,如果没有则添加即可。
1 | # vim /etc/ssh/sshd_config |
修改完之后,再运行一条命令就大功告成了:
1 | sudo service sshd restart |
接下来使用 ssh
登录服务器将不再需要输入密码,直接通过公钥、私钥配对即可登录。
0x03 Keep Alive
有时候连接 SSH 经常会断开,导致工作效率低下,可以进行如下配置。
服务端 Server
1 | # vim /etc/ssh/sshd_config |
第一行表示让 server 每隔 30 秒向 client 发送一个 keep-alive 包来保持连接;
第二行配置表示如果发送 keep-alive 包数量达到 60 次,客户端依然没有反应,则服务端 sshd 断开连接。
客户端 Client
1 | # vim /etc/ssh/ssh_config |
本地 ssh 每隔 30s 向 server 端 sshd 发送 keep-alive 包,如果发送 60 次,server 无回应断开连接。
0x04 Share Connection
如果需要在多个窗口中打开同一个服务器连接,可以尝试添加 ~/.ssh/config
几行设置项:
1 | ControlMaster auto |
配置之后,第二次 SSH 连接将会共享第一次建立的连接,从而加快速度。
添加长连接配置,每次 SSH 建立连接之后会被保持 4 个小时,退出服务器仍然可以复用。
1 | ControlPersist 4h |
接下来配置连接中转,效果示意如下:
1 | # Local ---(SSH)---> Server1 ---(SSH)---> Server2 |
首先 SSH 登入进 Server1,接着在 Server1 上登入 Server2 时,就會自动使用你本地的 SSH Key。
下面是最终的配置内容,可以对照着自己已有的配置进行增删。
1 | Host * |