多台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
转自:https://zhuanlan.zhihu.com/p/111812831