最近几天实验室服务器经常连接中断,每次中断后我要重新输入一遍密码,密码因为安全设置的也不短,每次熟真的很累。于是想起来之前师兄说可以设个密钥什么的,刚刚成功实践了下,记录一下。
本次教程建立在VS Code+Remote-SSH插件开发环境。本地环境是Windows,远程环境是Linux的普通用户,非root。
第一步:本地生成公钥和密钥
打开C:\Users\你的用户名文件夹,中文Windows系统是C:\用户\你的用户名文件夹,如:C:\Users\xxx;
在上述目录找到.ssh文件夹,若不存在,新建一个;
在.ssh目录启动命令行,有两种方式:
方法一:打开cmd,切换到该文件夹下
方法二:在该文件夹空白处,按住shift键盘右击→在此处打开powershell窗口
输入:
ssh-keygen -t rsa
一直回车,如下图本地就成功了:
这时你会看到文件夹下生成了两个文件,id_rsa和id_rsa.pub,id_rsa.pub便是公钥,后面我们主要用它。
第二步:服务器
- 连接到你的远程服务器,如使用Xshell+Xftp或MobaXterm,同样地,找到home\用户名.ssh文件夹(没有的话使用命令mkdir .ssh新建);
- 若有.ssh文件夹,查看其中是否包含名为authorized_keys的文件,若无,使用touch authorized_keys命令创建;
- 打开上述authorized_keys文件,使用vim或gedit都可以,将本地Windows系统上我们创建的id_rsa.pub里面的内容拷贝到authorized_keys中保存即可。
PS:记得在Remote-ssh中配置远程服务器的信息,如下图
到这里应该大部分就结束了,试验一下vscode连接对应服务器应该就不用输入密码了
第三步(扩展):多台电脑连接服务器
因为我日常用台式机,但经常需要用笔记本开会,或者回家的时候肯定用不了台式机,因为需要两台电脑切换着使用。于是想两个电脑都免密登录。中间踩了坑不过还是解决了。
基本步骤和上面一样,本机电脑生成公钥私钥,将公钥复制到服务器authorized_keys文件下,注意是复制粘贴到最后,不是直接替换。最好换行再复制。这样等于服务器上多了一个你本地的公钥,同时也不影响之前别的设备的配置,达到多一个设备免密的效果。
不过到这里还不算完,我就是这样试了好多遍失败了,以为是复制粘贴换行原因,其实不是,主要是权限的问题。
在进行完上述操作后,最后还要设置一下权限。
chmod 700 .ssh
chmod 600 authorized_keys
此时应该多台电脑都可以免密访问服务器啦,可以愉快编程了。
关于权限的解释可以看下这篇文章