烂笔头笔记: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或者空格都可以,没有具体要求。

关于多个服务器如何使用

如果你有一组服务器,想在自己的客户端通过同一个私钥进行访问,则可以通过Host通配的方式实现。

Host 192.168.1.*
        User bob
        Port 10086
        IdentityFile ~/.ssh/cluster.rsa

经过上述通配设置后,通过客户端访问服务器192.168.1.1~255(假设子网掩码为24)将统一使用cluster.rsa私钥连接到服务器的10086端口。特别适合经过统一安全配置,改过SSH服务端口号的情况。

测试配置是否正确

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

ssh -T user@host

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

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值