SSH配置
安装确认
这里首先需要保证内部已经处理好 openssh:
sudo apt install openssh-server
确认已经挂起生效监听默认的 22 端口:
sudo lsof -i |grep ssh
这里出现 *:ssh(LISTEN) 就说明已经有服务开始监听.
生成公密钥
首先绝对不要使用 root 来作为外部SSH访问用户, 而是应该创建非 root 用户来作为登录账号.
这里以我内部的
meteorcat账号为例, 假设目前登录是该账号
这里需要说明目前主要密钥加密类型:
- rsa (常规的加密类型, 兼容性最好)
- ecdsa (新版本的加密类型, 安全性最高,处理最快, 老版本ssh不兼容)
一般来说新系统推荐使用 ecdsa 加密(注意这里不需要 sudo):
ssh-keygen -t ecdsa -C "MeteorCat"
这里 -C 设置备注信息, 用于标注密钥的大概信息来配合个生成的公钥使用, 键入之后他会有以下内容:
Generating public/private ecdsa key pair.
# 以下提示说明创建密钥KEY文件, 回车默认就创建在当前登录用户的家目录之下
Enter file in which to save the key (/home/meteorcat/.ssh/id_ecdsa):
Created directory '/home/meteorcat/.ssh'.
# 以下提示说明创建密钥KEY是否还要进行二次密码加密, 回车表示不需要
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
# 后续这里生成公钥和私钥到指定目录下
Your identification has been saved in /home/meteorcat/.ssh/id_ecdsa
Your public key has been saved in /home/meteorcat/.ssh/id_ecdsa.pub
这里处理完成就会在当前登录用户找到公钥和私钥文件:
ls -l ~/.ssh
# 以下的显示内容
# -rw------- 1 meteorcat meteorcat 505 Oct 6 23:39 id_ecdsa
#-rw-r--r-- 1 meteorcat meteorcat 171 Oct 6 23:39 id_ecdsa.pub
这里还需要创建记录其他可以登录的用户公钥:
touch ~/.ssh/authorized_keys # 生成放置其他公钥的文件
chmod 600 ~/.ssh/authorized_keys # 设定文件权限
chmod 700 ~/.ssh # 设定文件夹权限
这样公密钥生成就已经完成了.
导入公钥
这里将其他公钥生成内容复制导入到 ~/.ssh/authorized_keys 之中, 一行则为一个公钥, 公钥格式如下:
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIxxxxxxxxxxxxxxxxxxxxxxxxxx
ecdsa 256-062421
直接附加即可.
配置免密登录
修改指定 ssh 文件:
sudo vim /etc/ssh/sshd_config
找到以下内容注释修改:
# 以下内容找到并解除注释
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
# 禁用ROOT登录
PermitRootLogin no
# 禁用密码登录, 最好暂时不要开启这项, 保证能够正常免密登录再开启
PasswordAuthentication no
后续重启系统服务:
sudo systemctl restart sshd
后续可以尝试下直接免密登录是否生效.
单独配置
在某些情况之下, 需要单独配置某些账号允许密码登录, 比如小型个人服务器管理账号需要密钥验证, 但是 Git 账号只需要密码拉取.
个人私用服务器个人账号采用密码, 但是
Git Clone仅仅需要密码拉取, 方便只需安装Git就直接输入账号密码拉取, 这里默认已经配置好git账号权限等.
这里的 git 账号权限配置在 /etc/passwd 文件内容如下:
git:x:1001:1001::/home/git:/usr/bin/git-shell
请确定是否引导到
git-shell的执行命令下.
确定之后执行编辑命令:
sudo cat /etc/ssh/sshd_config.d/git.conf # 创建编辑针对 git 管理员配置
内容如下:
Match Group git
Match User git
PubkeyAuthentication no
PasswordAuthentication yes
这里配置项说明:
Match Group git: 匹配Git管理员组Match User git: 匹配Git管理员账号PubkeyAuthentication no: 设置不需要密钥验证登录PasswordAuthentication yes: 设置启用自带的密码登录- 其他配置可以根据
/etc/ssh/sshd_config主文件修改配置, 默认继承主文件配置
配置完之后重启 sshd 即可, 这样就能实现单独 git 输入账号密码进行 git clone 指令.