在 centOS 上配置 Git 密钥认证自动登录
本地客户端 centOS 虚拟机,远程服务器端仓库也是 centOS。
在为 Git 传送创建免密码连接之前,首先确保,本地客户端能使用 git 上推下拉远程服务端 Git 仓。
在远程服务器端中,用户种类:
- root:系统超级用户,属于 root 组。禁止 ssh 登录远程服务器 shell。
- admin:自定义管理员用户,属于 wheel 组。允许 ssh 登录远程服务器 shell。
- developer:自定义普通用户,属于 develop 组。允许 ssh 登录远程服务器 shell。对项目程序代码文件,是所有者。scp、sftp 下载上传文件。
- git:自定义普通用户,属于 develop 组。禁止 ssh 登录远程服务器 shell。对共享的 Git 仓库是所有者。Git 上传下载 Git 远程仓库。
在本机客户端中,用户种类:
- root:系统超级用户,属于 root 组。进入本机 ceonOS 时,默认使用的用户。为了个人方面,经常使用。
本机客户端 centOS 上,生成 SSH 密钥
本机 centOS 上,使用 root 用户,进行 git 操作。所以只为 root 用户生成密钥即可。若以前使用 SSH,已经创建过,这里不能再次生成了,因为 SSH 连接和 Git 传送,是相同的密钥。
# 为 root 用户,生成 SSH 密钥ssh-keygen -t rsa -C "myname@email.com" Enter file in which to save the key (/root/.ssh/id_rsa): # 直接回车 Enter passphrase (empty for no passphrase): # 直接回车 Enter same passphrase again: # 直接回车
参数-C
带的 email 地址,是给产生的秘钥对加了一个注释。每台电脑上产生秘钥对时,加注释信息内容主要跟这台机器相关的内容,并且把秘钥加入到代码托管网站的列表里面的时候,用这个跟某台电脑密切相关的名称。以后如果,不用这台电脑了,从网站上删除这个秘钥很方便。
生成 SSH 密钥命令对话中,先要求你指定文件名,使用默认(/root/.ssh/id_rsa),直接回车,然后它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空。
# 查看ls -al ~/.ssh
~
:当前用户所在的目录。若当前用户是普通用户 git,那么就是/root
。若当前用户是 root,那么就是/root
。
- ~/.ssh/known_hosts:OpenSSH 密钥储存文件。
- ~/.ssh/config:用户配置文件:是当前用户使用 SSH 远程连接的相关参数的配置文件。
- ~/.ssh/id_rsa:私钥。
- ~/.ssh/id_rsa.pub:公钥。
cat ~/.ssh/id_rsa.pub #显示如下: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDONr+JFh35P1D41c3T+nVJWwohYjIi09OaWVJE2M6WDS7S/U3hZLbMqothmHg7NkVN1epx6fa/YMq66KtujNhCDZMo2coReL5tBhkaPnNkHCP2kJd6fonUZK92SCf4wvNJMzZPzQswcC8xJv8/HKd7UTRkJR1xyB8iznAFVyfNrpXDGlx8a/PM2tn0M1664iXkUbypEsHo2QFidd0EYwviSaYBpcg9dG3YFCq1Fi3i82AqGB3w1PgaMsp68wxMTPf1sdOEF/ehR2gR7BNUu2blm0zXSyXtfhdM33GxCVb0LvWWJ9FPIJnB1+CzzJ15mspZtqVQ2hroc/KmzmvCmP8uXklAf0ks/RflwO7sJupdHP6ZQ0vwPQ2kjYtbbynHBMOrciybGlagU6p4ZuQpQGi+pw7cjlYO8lYb2lRMl3IsSA1RPSDvvbKkxUa7mlYbvQSMvEfOfwNjCibh0mrXvT5AACh4uYHxI5tRxjC6EUwO+fBa4EH4vvYxH83yD1H8+i0= myname@email.com
在服务器端 centOS 上,添加公钥
因为本机客户端当前用户是 root 用户,使用远程服务器端上 git 用户,进行 Git 连接,那么远程服务器端,放置公钥的文件位置是:/home/git/.ssh/authorized_keys。
cd /home/gitls -al /home/git # 若没有 .ssh 目录,那么就创建一个mkdir .ssh/cd .ssh/touch authorized_keys
把本机 root 用户的 SSH 公钥,手工复制,写入/home/git/.ssh/authorized_keys文件中。若有多个需要为每个单独命名,避免冲突,添加的验证码,需要一行一个。
vim /home/git/.ssh/authorized_keys
# 设置权限chown -R git:develop /home/git/chmod -R 700 /home/git/.ssh/chmod 600 /home/git/.ssh/authorized_keys