(1)生成公钥/私钥对
1 |
$ ssh-keygen -t rsa -P '' |
注意"-P
"后面输入的内容为空的时候代表不需要输入密码。
完成后会在当前用户目录下的.ssh
目录下生成id_rsa
,id_rsa.pub
这两个文件。
(2)拷贝证书到本地机器
把.ssh/id_rsa.pub
拷贝下来,然后重命名成id_rsa.pub.git
也就是Key
加上用户名的命名方式,这样在Linux
或者执行命令行的时候SSH
可以自动进行用户名,密码的对应。
(3)对于Linux
复制的id_rsa.pub.git
添加到.ssh/authorzied_keys
文件里
1 2 3 |
$ cat id_rsa.pub.git >> .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys |
authorized_keys
的权限要是600
。
(4)对于Windows
,则需要把id_rsa
这个文件拷贝下来,然后使用TortoiseGit
自带的Puttygen
转换为被TortoiseGit
支持的.ppk
文件。
点击"Conversions
"菜单中的"Import key
"选项,然后导入我们下载到的id_rsa
。
导入后,
由于Puttygen
的BUG,导致如果直接点击"Save private key
",会导致生产的Public key
是不正确的,因此,需要先点击"Save public key
",保存为文件后,无视这个文件即可。然后接下来点击"Save private key
"按钮,保存为.ppk
文件,这个PPK文件才是我们需要的。
(5)修改SSHD
的配置文件/etc/ssh/sshd_config
找到
1 |
#AuthorizedKeysFile %h/.ssh/authorized_keys |
这句,然后去掉注释。然后重启SSH服务
1 |
$ sudo /etc/init.d/ssh restart |
(6)修改登录认证文件,把认证信息导入到需要认证的用户目录下的.ssh/authorized_keys
文件中。
以上面添加的用户git
为例子,通过命令:
1 |
$ cat /etc/passwd | grep git |
可以看到输出如下信息:
1 |
git:x:999:1000:git,,,:/shares:/bin/sh |
从而找到用户git
的工作目录在/share
目录下面.
因此执行如下命令:
1 2 3 4 5 |
$ cp -r /root/.ssh /share/.ssh $ cd /share/.ssh $ cat id_rsa.pub >> authorized_keys |
接下来,需要修改authorized_keys
的所有者为用户git
,否则git
无法通过这个文件进行认证。
1 2 3 |
$ cd /share/.ssh $ chown git authorized_keys |
而对于管理员root
而言,我们不需要执行拷贝操作,只需要修改一下SSH
的配置文件,并且执行如下命令即可:
1 |
$ cat id_rsa.pub >> authorized_keys |
(7)Putty
设置使用PPK
文件进行登陆认证
左侧栏中选择Connection
->SSH
->Auth
:
然后点击左侧栏中的Session
,点击Save
保存设置,然后点击Open
连接服务器。
(8)登陆时候,还是需要输入用户名的,因为Ubuntu
服务器需要根据用户名来核查证书。输入用户名后,直接回车,会发现不需要再输入密码,就直接登陆了。