git sshkey和服务器登陆的sshkey管理问题

如今基本上都普及使用git了,因此服务器登陆的sshkey和git sshkey最好能分开使用,不要互相混淆。网上有不少关于单独配置linux服务器登陆证书和git证书的教程,可是都是囫囵吞枣。这里将这两个问题放在一块儿来处理。linux

服务器登陆的sshkey

authorized_keys再也不放在 %h/.ssh/authorized_keys ,而专门存放在一个指定的目录中,在本文的例子中,咱们将authorized_keys都存放 /etc/ssh/keys/%u/authorized_keysgit

这里假定咱们须要容许使用ssh登陆的用户为web-user。github

useradd -d /home/web-user -m -s /bin/bash web-user

首先,以 root 用户建立必须的目录:web

mkdir /etc/ssh/keys
mkdir /etc/ssh/keys/web-user
cd /etc/ssh/keys/web-user
ssh-keygen -t rsa -b 4096 -f id_rsa -C "web-user"

这里,请把id_rsa和id_rsa.pub的文件保存到本身电脑上,使用 puttygen.exe 生成私钥(Save Private Key)。shell

cat id_rsa.pub >> authorized_keys
rm id_rsa*
chown web-user:web-user ./ -Rf
chmod 700 ./
chmod 600 authorized_keys

上述操做中,后面三步很重要,authorized_keys文件和authorized_keys所在的目录若是权限不正确,则在登陆时会一直提示这个证书的权限被屏蔽。bash

接下来,修改/etc/ssh/sshd_config文件的配置,下面列举的内容是较为关键的部分,其余请酌情删改。服务器

PermitRootLogin no
 
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile    /etc/ssh/keys/%u/authorized_keys
 
PasswordAuthentication no
PermitEmptyPasswords no

修改完毕后,执行 service ssh restart 重启ssh服务,但注意,这里不要马上关闭当前链接,最好维持住,而后打开一个新窗口来验证ssh证书是否生效。ssh

关于登陆用户的权限问题.net

id -Gn web-user 能够知道该用户的所在的用户组。rest

若是须要这个用户拥有sudo的权限,须要将用户添加到指定的 sudoers 的组,具体能够查询 cat /etc/sudoers

git的sshkey

首先,git须要先设定当前环境的执行用户,root用户和须要使用git的权限的用户组,由于git默认的配置信息时保存在 %u/.gitconfig文件上,因此都须要设定:

git config --global user.name "Janpoem"
git config --global user.email "janpoem@163.com"

这里,假如你还没建立过和添加git的公钥,请参考git@osc的教程。下面假设你已经生成并拥有相关的私钥和公钥,而且已经在相关的git服务供应商添加了相关了公钥。

在用户的 .ssh 目录中,只须要保留id_rsa(私钥)便可,注意,是%u/.ssh~/.ssh,养成良好习惯:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

执行 ssh git@git.oschina.netssh git@github.com 检查证书是否能生效。

好了,今后更新不用再打密码了。

补充说明一下flashFXP的sftp协议设定的问题

若是你的证书的设定了passphrase,那么在flashFXP中,登陆类型要选择:

输入图片说明

若是没有设定passphrase,则使用【基于密钥】便可。

相关文章
相关标签/搜索