基于密钥验证的SSH连接方式
用客户端生成的非对称加密对,将公钥放到远程服务器上后,即可代替基于用户名密码的身份验证方式连接远程服务器。
原理参考:ssh免密码登陆及其原理
配置步骤
- 在本地生成SSH私钥、公钥
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
- 添加秘钥到ssh-agent
# -K 选项位于 Apple 的 ssh-add 标准版本中,
# 当您将 ssh 密钥添加到 ssh-agent 时,它会将密码存储在您的密钥链中。
ssh-add -K ~/.ssh/xxxx_id_rsa
- 如果本地已经有多个加密对,可以使用config文件管理
# @ ~/.ssh/config
# GitLab.com server
Host gitlab.com # 服务器别名,ssh时优先解析这里配置的服务器名
HostName gitlab.com # 服务器ip或域名
AddKeysToAgent yes
UseKeychain yes
PreferredAuthentications publickey
IdentityFile ~/.ssh/config/private-key-filename-01
# Private GitLab server
Host gitlab.company.com
HostName gitlab.company.com
AddKeysToAgent yes
UseKeychain yes
PreferredAuthentications publickey
IdentityFile ~/.ssh/config/private-key-filename
可参考:利用 SSH 的用户配置文件 Config 管理 SSH 会话
- 添加公钥到目标服务器上
# scp 到目标服务器上
scp ./xxxx_id_rsa.pub user@ip:/user/.ssh/
# 目标服务器上将拷贝过去的公钥追加到authorized_keys中
cat ./xxxx_id_rsa.pub >> authorized_keys