如今基本上都普及使用git了,因此服务器登陆的sshkey和git sshkey最好能分开使用,不要互相混淆。网上有不少关于单独配置linux服务器登陆证书和git证书的教程,可是都是囫囵吞枣。这里将这两个问题放在一块儿来处理。linux
authorized_keys再也不放在 %h/.ssh/authorized_keys
,而专门存放在一个指定的目录中,在本文的例子中,咱们将authorized_keys都存放 /etc/ssh/keys/%u/authorized_keys
。git
这里假定咱们须要容许使用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须要先设定当前环境的执行用户,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.net
或 ssh git@github.com
检查证书是否能生效。
好了,今后更新不用再打密码了。
若是你的证书的设定了passphrase,那么在flashFXP中,登陆类型要选择:
若是没有设定passphrase,则使用【基于密钥】便可。