烂笔头笔记:Windows 10下配置ssh免密钥访问需要注意的事项


本文出处:http://blog.csdn.net/chaijunkun/article/details/92799874,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文。

简介

从Windows 10 1803版本开始,系统自带了OpenSSH Client(https://devblogs.microsoft.com/commandline/windows10v1803/),这让广大程序员朋友,尤其是经常操作Linux的IT从业者有了原生的访问服务器方法。然而在实践过程中本人遇到一些问题,随手笔记,希望能帮到同样遇到这些问题的朋友

开启ssh-agent服务

在系统默认状态,或安装某些更新之后,可能ssh-agent服务没有开启,这会影响通过密钥证书方式访问ssh服务器的这部分用户,导致无法连接,远端提示:Permission Deny。通常的解决办法是将本地的私钥加入到ssh代理中。命令为:

ssh-add %userprofile%\.ssh\id_rsa

但是运行后会提示:

Error connecting to agent: No such file or directory

此时只需要在“运行”(Win + R)中执行services.msc,找到名为:OpenSSH Authentication Agent的服务,将其启动类型设置为:“自动”,并且将其启动即可。

密钥文件访问权限问题

当尝试将私钥添加到ssh代理时,或许你会看到这样一个错误提示:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions for 'C:\\Users\\someuser\\.ssh\\id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.

此时你应该考虑自己的密钥对权限设置过于宽松,会产生安全问题,最终导致本次私钥添加动作失败。设置密钥的宗旨是什么呢:

  1. 私钥:当前系统的SYSTEM,Administrators用户组,拥有该文件的完全控制权限;该文件的所有者拥有修改权限。
  2. 公钥:除去私钥的所有权限设置外,可以允许Everyone拥有读取和执行权限。

除去上述权限,其他权限一律取消,设置好之后就OK了。如果还是记不住怎么办呢?那就在系统中尝试使用:

ssh-kegen -t rsa -b 2048

来临时生成一个密钥对,然后分别点击私钥(id_rsa)和公钥(id_rsa.pub)文件来查看其属性的安全标签来确认如何设置。

关于多个密钥如何使用

如果你打算在访问不同远程服务器时使用不同的用户和私钥,那么可以将策略保存在%userprofile%\.ssh目录下,并以config作为文件名(没错,没有扩展名),文件权限与私钥权限设置一样。下面给出一个示例:

Host code.csdn.net
        HostName code.csdn.net
        User bob
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/csdn.rsa
Host github.com
        HostName github.com
        User bob
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/github.rsa
Host git.mycompany.com
        HostName git.mycompany.com
        User bob
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/git_key.rsa

Host:要连接的远程服务器地址(IP或者域名、主机名);

HostName:含义同Host,与Host保持一致;

User:指登录远程服务器时使用的用户名;

PreferredAuthentication:优先使用的鉴权方式,这里填写固定的public(即:使用公钥鉴权);

IdentityFile:既然选择了公钥方式鉴权,则需要指定本地连接到远程时使用的对应私钥文件,所以在这里设置对应的私钥文件完整文件名即可(文件名可以使用“~”作为当前用户的home目录,也可以使用C:\\Users\\someuser\\.ssh\\id_rsa这样的绝对目录,但是要注意在Windows中请使用“\\”来转义目录分隔符“\”)。

注意:在上面的配置文件中Host对应下面的配置项有缩进,这个缩进使用tab或者空格都可以,没有具体要求。

测试配置是否正确

ssh工具为我们提供了测试模式,来评估ssh配置是否能够真的连接到远程服务器。请使用如下命令(请根据实际情况替换user和host值):

ssh -T user@host

整个过程中出现任何配置问题都会在回显信息中反馈,帮助定位问题。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章