一、前言
个人购买了阿里云服务器,配置好远程连接密码和登陆密码后,使用iTerm2终端ssh root@ip,每次都需要输入密码,实在是麻烦。
ssh免密登陆,其实就是将本机的公钥存到服务器上,authorized_keys文件是Linux系统默认生成的用来保存远程登录设备的公钥。初始时为空,在.ssh目录下。
二、环境准备
1. 阿里云ECS服务器
2. macOS系统
3. 本机SSH公钥
(1)查询本地是否生成过
cat ~/.ssh/id_rsa.pub
如果没有,则继续执行(2)
(2)生成公钥
ssh-keygen -t rsa 或 ssh-keygen -t rsa -C "email地址"
说明:第二个引号内是邮箱mail,生成后可以作为Git远程仓库使用。该指令回车后需要输入键值对和密码,直接回车就行。
执行(1),查看是否公钥是否生成。
三、配置
下面提供了两种方法,二选一即可。
方法一
1. 如果是第一次配置,先查看远程服务器/home下是否有.ssh文件夹,如果没有,执行:
mkdir .ssh
如果有,该步骤跳过。
2. 将本机公钥文件上传至服务器
scp .ssh/id_rsa.pub root@ip:/home/.ssh
3. 添加公钥到authorzied_keys文件
cat id_rsa.pub >> .ssh/authorized_keys
4. 删除临时文件
rm id_rsa.pub
方法二
终端执行:
ssh-copy-id root@ip
输入登陆密码(即实例密码)即可。
配置成功信息如下:
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@xxx.xx.xxx.xxx'" and check to make sure that only the key(s) you wanted were added.
这里我使用的是方法二。需要说明的是,如果使用该方法,不需要查看服务器是否有.ssh文件夹。
四、测试
上面的方法二选一即可,终端执行ssh root@ip就可以执行免密码登陆了。
五、其他
在本机.zshrc中配置别名
alias[别名]=[指令名称]
如:
alias liulinde='ssh root@xxx.xx.xxx.xxx'
保存退出后,执行source .zshrc命令使改动生效。
回到终端,示例如下:
~ liulinde Last failed login: Fri Apr 24 22:24:18 CST 2020 from 138.204.122.220 on ssh:notty There were 2 failed login attempts since the last successful login. Last login: Fri Apr 24 21:38:32 2020 from 117.100.126.53 Welcome to Alibaba Cloud Elastic Compute Service !
简单好记!