Windows下设置SSH免密

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows下设置SSH免密相关的知识,希望对你有一定的参考价值。

参考技术A     笔者以前在linu之间配置SSH秘钥来完成免密,为了方便Windows Terminal使用,ssh又无法直接在命令行指定密码,于是就需要配置一下Windows到linux的免密,公钥的分发需要手动scp传递,新建公钥文件时需要注意权限问题。

1、Windows生成密钥对

    在cmd运行ssh-keygen -t rsa ,在目录下生成一个 .ssh 文件夹,其中包含私钥文件 id_rsa 和公钥文件 id_rsa.pub。

    2、将公钥复制到远程主机

    在Linux中有ssh-copy-id命令将公钥复制到远程主机,但是Windows下可没有哦,那么就需要手动分发。下面使用scp命令来远程传递文件,也可以使用winscp可视化操作。

scp id_rsa.pub pi@192.168.31.103:/home/pi/.ssh

    然后进入到远程主机将id_rsa.pub重命名为authorized_keys。

    mv id_rsa.pub authorized_keys

    为了保存公钥也可以cat  id_rsa.pub >> authorized_keys,或cp  id_rsa.pub  authorized_keys 。

    3、配置完成后测试正常。

    上面的是Windows登陆树莓派免密配置,但是笔者配置Windows登陆centos7虚拟机时无法完成公钥认证,导致免密失败。

    查看调试信息:ssh -v mycentos@192.168.31.120 ,感觉是无法认证公钥。

    关闭centos7的/etc/ssh/sshd_config配置文件中秘密认证登陆后:Permission denied (publickey,gssapi-keyex,gssapi-with-mic),应该是配置文件的错误。密钥在树莓派上可以正常识别认证的。但是笔者测试修改了一个几个配置条目都不行,都不知道那里有问题,带以后再工作中解决吧,一时半会也搞不定。

2021年3月9日:

    笔者在红帽redhag生产系统上查看/etc/ssh/sshd_config配置文件,发现配置文件是保持默认的,都没有修改,但是在末尾添加了一个AllowUsers,笔者将其修改后加入到centos系统中但是还是不行。

    AllowUsers *@192.168.*.*

    最后找到了一个权限问题,即使authorized_keys文件权限问题,因为是笔者在.ssh目录下新建的文件的默认权限是-rw-rw-r-- (664),对于authorized_keys来说权限过大,修改为644后就可以了。

    测试结果如下。

    还有可以免去输入用户的麻烦,这就需要解决解决本地登陆用户与远程登陆用户不一致的问题。在.ssh文件夹下新建config文件,并写入ip和用户名信息。接下来就可以使用ssh mycentos来免密免用户登陆了。

以上是关于Windows下设置SSH免密的主要内容,如果未能解决你的问题,请参考以下文章

Windows和Linux下实现ssh免密登录

Windows系统下实现服务器SSH免密登录

Windows机器通过ssh免密连接Linux

Windows机器通过ssh免密连接Linux

Windows机器通过ssh免密连接Linux

Windows机器通过ssh免密连接Linux