多台WIN10之间的SSH免密登录

网上有很多关于使用win10-ssh客户端登录linux-ssh服务端的介绍,但很少介绍多台win10-ssh服务端之间互访的。以下记录如何免密登录win10-ssh服务。

1、安装OpenSSH。

网上有很多介绍通过添加win10可选功能安装openssh,此处不赘述。如果通过添加可选功能出现安装失败,可以下载openssh自行安装。

下载地址:PowerShell/Win32-OpenSSH 。

注意:最好不要安装在C:\Users\your_userName\ 下面,不然会出现一些问题,建议直接解压到到C盘下C:\OpenSSH,并将该路径添加至环境变量Path。

开始安装:

以管理员身份打开powershell,切换至C:\OpenSSH(如果有添加环境变量则随意位置)。

set-executionpolicy remotesigned
cd C:\OpenSSH
以下安装命令需要在执行第一条命令后才能执行,不然会报错
 .\install-sshd.ps1

安装完毕。

2、开启ssh服务

Start-Service sshd

也可以使用net start sshd 启动,其他相关命令如下:

查看状态:Get-Service sshd
关闭服务:Stop-Service sshd
重启服务:Restart-Service sshd

确保防火墙关闭或防火墙有放开22端口。

从其他主机(客户端) ssh your_userName@your_IP_Adress 测试是否正常连接,默认需要输入密码登录。

3、开启免密登录

先在本地(客户端)生成公钥,当然,本地也是需要安装openssh。

ssh-keygen -t rsa

切换到路径:C:\Users\your_userName\.ssh,找到公钥文件id_rsa.pub。

复制公钥文件内容,到服务端C:\Users\your_userName\.ssh下创建文件authorized_keys(没有文件后缀),粘贴公钥,保存退出。

服务端切换到C:\ProgramData\ssh\下(首次启动sshd后会生成该文件夹),打开sshd_config文件,

修改文件(以下是重点):

确保以下3条没有被注释
PubkeyAuthentication yes
AuthorizedKeysFile	.ssh/authorized_keys
PasswordAuthentication no

确保以下2条有注释掉
#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

其余不做修改,基本都是已注释不启用。

重启服务:Restart-Service sshd

4、测试登录

回到客户端 ssh your_userName@your_IP_Adress,此时无需密码直接登录说明正常(首次登陆可能会提示是否加入known_hosts,yes即可)。如果是多台win10主机互相免密,操作同上,不过需要每台主机的authorized_keys都需要包含其他主机公钥,即包含多条公钥记录。

已测试通过的配置文件内容  sshd_config

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

PubkeyAuthentication yes

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile    .ssh/authorized_keys

#AuthorizedPrincipalsFile none

# For this to work you will also need host keys in %programData%/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no

# GSSAPI options
#GSSAPIAuthentication no

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# override default of no subsystems
Subsystem    sftp    sftp-server.exe

# Example of overriding settings on a per-user basis
#Match User anoncvs
#    AllowTcpForwarding no
#    PermitTTY no
#    ForceCommand cvs server

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
View Code

 

转自:https://zhuanlan.zhihu.com/p/111812831

posted @ 2024-02-02 16:40  人生苦短,知足常乐!  阅读(190)  评论(0编辑  收藏  举报