SSH 免密码登陆

在一些不重要的场景,比如宿主机连接虚拟机,或者部署测试环境等等,用 SSH 登录服务器,每次都要输入密码显得很麻烦。所以可以配置个本机免密码登录服务器,方便调试。(当然,实际生产环境就要慎重使用)

生成 SSH key(公钥和私钥)

1
2
3
4
5
6
# 用 ssh-keygen 生成
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

# 查看公钥
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

导入公钥到本地认证文件

1
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

导入公钥到服务器认证文件

可以把公钥字符串复制出来,然后粘贴到 Shell,导入到服务器认证文件:

1
2
3
4
5
6
# 登录到服务器
ssh root@192.168.1.100

# 如果不存在.ssh则先创建
# mkdir ~/.ssh
echo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc.... >> ~/.ssh/authorized_keys

或者通过 FTP、SCP 等工具上传公钥文件,再导入到服务器认证文件。这里使用 SCP 工具上传到服务器再导入:

1
2
3
4
5
6
7
8
9
# 默认是22端口,复制到服务器root用户目录下
# 提示输入密码,按提示操作即可
scp -P 22 ~/.ssh/id_rsa.pub root@192.168.1.100:/root/id_rsa.pub

# 登录到服务器
ssh root@192.168.1.100
# 如果不存在.ssh则先创建
# mkdir ~/.ssh
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

退出 SSH,再登录,发现不用密码了。大功告成~