前面已经讲过如何在windows下利用cygwin搭建ssh服务,但是使用账户密码的验证登录模式比较麻烦,尤其是在它作为多人访问的服务的时候。
下面讲一下如何使用公钥认证的方式来登录。
网上这一类的文章很多,但putty来登录时要注意个问题,puttygen生成的公钥私钥是不能被ssh识别。得使用ssh-keygen命令来创建钥匙对。(之前也按照网上的教程使用puttygen来生成key,浪费了好多时间)
1.创建密钥对:
$ ssh-keygen -t rsa
一路回车即可!
中间有提示是否给私钥加密,这个看个人喜欢。下面命令则是修改私钥密码。
例:私钥文件是/cygdrive/d/id_rsa,把它新密码重置为空,执行后会提示输入旧密码验证。
$ ssh-keygen -p -f /cygdrive/d/id_rsa -N ''
2.密钥设置:
$ cd /home/username/
$ mkdir .ssh && chmod 700 .ssh
$ cd .ssh/
$ cat /cygdrive/d/id_rsa > authorized_keys (将公钥放置其中)
$ chmod 600 authorized_keys
3./etc/sshd_config配置
要把下面这几项的注释去掉,并对应值改为如下内容:
StrictModes no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
改完后要重启ssh服务才能生效。
4.本机用bash命令行登录测试一下:
ssh -i /cygdrive/d/id_rsa username@127.0.0.1
加个-v参数则看到具体调试信息,无法正常登录时可以调试下
ssh -v -i /cygdrive/d/.ssh/id_rsa git@127.0.0.1
使用putty登录的话,则需要先把该私钥转换成它兼容的格式。
使用puttygen导入私钥,再点“Save private key”即生成它兼容的私钥文件了。