前言
在Mac OS下通过ssh命令登录 CentOS/Ubuntu系统,一直是通过这样的命令进行连接:
ssh root@106.13.75.41
root@106.13.75.41's password:
每次都通过这种方式连接,效率很低且容易出现密码输入错误。这种情况下,免密登录
就成了提高效率的手段,另外,在基于 jenkins
做 CI/CD
的时候,免密登录是关键步骤。这里说的免密
是指通过配置 ssh-key
来进行的身份验证,在客户端机器生成公钥和私钥,将公钥上传到服务器,登录的时候通过本地私钥来登录。接下来走走流程,这里以 ubuntu
为例。
步骤一:生成公钥和私钥(rsa)
ssh-keygen -t rsa -C <email> -f ubuntu.rsa
其中 email 是邮箱信息,随便填写即可。像 github,gitlab 这种就建议使用真实注册的邮箱地址,会收到相关的邮件信息。-f ubuntu.rsa
是指定生成的文件名,可不配置。在.ssh 目录下,如果有多个公钥私钥的情况下,建议配置。输入完成后,一路 Enter。
在.ssh目录下查看生成的文件:
步骤二: 上传*.pub文件到服务器
ubuntu.rsa.pub
是公钥文件,需要上传至服务器,上传过程的命令如下:
ssh-copy-id -i .ssh/ubuntu.rsa.pub root@106.13.75.41
执行完成上面的命令后,实际上是将共公钥信息上传到了服务器的 .ssh/authorized_keys
文件中。
步骤三:测试使用私钥登录服务器
步骤四:配置别名登录服务器
在.ssh目录下有个 config
文件,如果没有,可以手动创建一个。我们可以在该文件中配置如下内容:
# 该文件用于配置私钥对应的服务器信息
# github / gitlab 等配置
# 登录远程ubuntu
Host remote-ubuntu
User root
HostName 106.13.75.41
IdentityFile ~/.ssh/ubuntu.rsa
Protocol 2
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 20
LogLevel INFO
其中 remote-ubuntu
就是别名,IdentityFile
指向本地的私钥文件,其余配置拷贝即可。
步骤五:免密登录
最后,我们通过 ssh remote-ubuntu
就能够登录服务器了。