整体流程:
1. 在本机创建公钥和私钥
2. 在本地~/.ssh/config文件中,设置IdentifyFile为私钥地址
3. 将公钥上传到服务器
下面是每一步的详解:
1. 在本机创建公钥和私钥:
在命令行中输入:
ssh-keygen
会显示:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/liuyulin/.ssh/id_rsa):
输入自己想要放置这两个钥匙的地址,如果回车就是默认地址
命令行显示:
Enter passphrase (empty for no passphrase):
免密码登陆,则敲击回车,否则创建一个密码,这是一会上传完公钥后,再连接服务器时需要输入的密码
命令行显示:
Enter same passphrase again:
重复输入之前的密码(如果之前敲击回车,这次也回车)
然后可以在之前输入的地址中找到这两个钥匙,公钥为.pub结尾的文件
2. 在本地~/.ssh/config文件中,设置IdentifyFile为私钥地址
打开vscode,在远程资源管理器中,打开~/.ssh/config文件(如下图,先点击圆圈小电脑的位置-然后是SSH旁边的圆圈设置-然后点击config文件)
config文件记录了服务器的配置,Host为主机别名,HostName为服务器的IP地址,User为username,Port为端口号,如果没有特别特定,则不用写,IdentityFile就是我们之前创建的私钥
主机别名的作用是:
之前的登录方式为 ssh <username>@<ip地址> -p <端口号>
现在可以用 ssh <主机别名> 直接登录
3. 将公钥上传到服务器
在本地命令行中输入
ssh-copy-id -i <公钥地址> <username>@<ip地址>
将公钥上传到服务器,如果有主机别名也可以用 ssh-copy-id -i <公钥地址> <主机别名> 上传
上传成功后,可以在服务器中ssh目录下看是否是我们想要写入的公钥
cd ~/.ssh
vim authorized_keys
如果一切顺利的话,现在可以免密登陆了!
可能会遇到的问题:
1. Load key xxxx: bad permissions
说明私钥权限不够,输入:
chmod 600 私钥地址
2. 其他问题待补充