配置SSH秘钥登陆远程服务器

基于密钥验证的SSH连接方式

用客户端生成的非对称加密对,将公钥放到远程服务器上后,即可代替基于用户名密码的身份验证方式连接远程服务器。
原理参考:ssh免密码登陆及其原理

配置步骤

  1. 在本地生成SSH私钥、公钥
$ cd ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  1. 添加秘钥到ssh-agent
# -K 选项位于 Apple 的 ssh-add 标准版本中,
# 当您将 ssh 密钥添加到 ssh-agent 时,它会将密码存储在您的密钥链中。
ssh-add -K ~/.ssh/xxxx_id_rsa
  1. 如果本地已经有多个加密对,可以使用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 会话

  1. 添加公钥到目标服务器上
# scp 到目标服务器上
scp ./xxxx_id_rsa.pub user@ip:/user/.ssh/
# 目标服务器上将拷贝过去的公钥追加到authorized_keys中
cat ./xxxx_id_rsa.pub >> authorized_keys

推荐阅读更多精彩内容