Windows下配置SSH实现免密访问和远程端口转发

这篇具有很好参考价值的文章主要介绍了Windows下配置SSH实现免密访问和远程端口转发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景介绍

最近想要配置自家的电脑用作服务器,方便自己远程访问。

由于没有静态IP,最开始想使用DDNS,从花生壳注册了一个域名,然后在路由配置端口转发,配置完成后,发现家里网络是光猫拨号的,路由器自动获取ip,转发的依然是内网ip,局域网可以访问,但是外网仍然访问不了,后面改成路由器拨号,依然没有公网ip。后面就想着通过一个公网上的服务器做跳板,网上找了一圈,决定使用ssh技术进行转发连接,本路记录ssh实现过程中的一些问题。

二、ssh简介

window下有自动OpenSSH工具可以实现ssh连接管理。

安装方法参考:安装 OpenSSH | Microsoft Learn

OpenSSH 是安全 Shell (SSH) 工具的开放源代码版本,Linux 及其他非 Windows 系统的管理员使用此类工具跨平台管理远程系统。 OpenSSH 在 2018 年秋季已添加至 Windows,并包含在 Windows 10 和 Windows Server 2019 中。

SSH 基于客户端-服务器体系结构,用户在其中工作的系统是客户端,所管理的远程系统是服务器。 OpenSSH 包含一系列组件和工具,用于提供一种安全且简单的远程系统管理方法,其中包括:

  • sshd.exe,它是远程所管理的系统上必须运行的 SSH 服务器组件

  • ssh.exe,它是在用户的本地系统上运行的 SSH 客户端组件

  • ssh-keygen.exe,为 SSH 生成、管理和转换身份验证密钥

  • ssh-agent.exe,存储用于公钥身份验证的私钥

  • ssh-add.exe,将私钥添加到服务器允许的列表中

  • ssh-keyscan.exe,帮助从许多主机收集公用 SSH 主机密钥

  • sftp.exe,这是提供安全文件传输协议的服务,通过 SSH 运行

  • scp.exe 是在 SSH 上运行的文件复制实用工具

本部分中的文档重点介绍了如何在 Windows 上使用 OpenSSH,包括安装以及特定于 Windows 的配置和用例。

  • 有关常见 OpenSSH 功能的其他详细文档,请参阅 OpenSSH.com。

三、SSH访问

  1. 连接前准备

使用ssh访问前需要确认远程主机上安装了OpenSSH服务器,本地主基上安装了OpenSSH客户端。

Windows下配置SSH实现免密访问和远程端口转发

基本信息:

  • 本地主机的IP(局域网内的):Local_IP

  • 服务器的IP(公网IP):Server_IP

  • 服务器可登录的用户名:UserName

  • 服务器用户的密码:123456

  • ssh密钥对(后续创建)

  1. 启动ssh服务器

2.1 服务管理启动服务

通过win+r调出运行界面,然后输入services.msc打开服务管理器。

Windows下配置SSH实现免密访问和远程端口转发

找到OpenSSH SSH Server服务启动,一般建议设置为自动启动

Windows下配置SSH实现免密访问和远程端口转发

2.2 使用命令直接启动服务

以管理员运行PowerShell或者命令行,然后运行如下命令:

# 启动服务
Start-Service sshd

# 设置为自启动:
Set-Service -Name sshd -StartupType 'Automatic'

注:sshd是OpenSSH的服务名

Windows下配置SSH实现免密访问和远程端口转发

3.连接到SSH服务器

3.1 使用名称和密码连接

直接在powershell中用ssh访问

ssh username@server_IP

# 连接成功后会收到如下提示
The authenticity of host 'servername (10.00.00.001)' can't be established.
ECDSA key fingerprint is SHA256:(<a large string>).
Are you sure you want to continue connecting (yes/no)?

#输入 yes
#然后输入密码,注意输入密码时不会显示密码。

3.2 使用密钥对访问(免密登录)

3.2.1 关于密钥对

密钥对指的是由特定的身份验证协议使用的公钥和私钥文件。

SSH 公钥身份验证使用不对称加密算法来生成两个密钥文件 – 一个为“私钥”文件,一个为“公钥”文件。 私钥文件等效于密码,在所有情况下都应当保护它们。 如果有人获取了你的私钥,则他们可以像你一样登录到你有权登录的任何 SSH 服务器。 公钥放置在 SSH 服务器上,并且可以共享,不会危害私钥的安全。

3.2.2 生成密钥对
ssh-keygen -t ed25519

如上,-t是用于指定算法,包括DSA、RSA、ECDSA、Ed25519等,未指定时默认为RSA算法。

# 以下设置以ed25519算法生成密钥对
PS C:\WINDOWS\system32> ssh-keygen -t ed25519
# 提示生成密钥的信息
Generating public/private ed25519 key pair.
# 此处用于设置密钥文件的存储位置,默认为前面括号中的文件名称
# 若要设置名称,后方需要写入文件所在路径以及文件名称才可,不能只写一个名称
Enter file in which to save the key (C:\Users\xxx/.ssh/id_ed25519):
# 由于我原来生成过,所以要确认是否覆盖
C:\Users\xxx/.ssh/id_ed25519 already exists.
Overwrite (y/n)? y # 回复y确认覆盖
# 以下时设置创建密码时是否加密私钥的密码,直接按Enter是不加密
Enter passphrase (empty for no passphrase):
# 确认密码
Enter same passphrase again:
# 密码确认通过后会生成密钥对
Your identification has been saved in C:\Users\xxx/.ssh/id_ed25519.
Your public key has been saved in C:\Users\xxx/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:gSHnvI7PnKlI/QgZUzvbbFoY+o+l0pIhgSlHkytgkbI xxx@PC-xxx
The key's randomart image is:
+--[ED25519 256]--+
| .o.. o          |
|oo+  = o         |
|=+ o. + .        |
|E o. . . .       |
|.+o + . S        |
|. .* X           |
| .=+= B          |
| .++.& o         |
|  .oBoO          |
+----[SHA256]-----+

创建成功后可以在文件夹下看到密钥对,无扩展名的是私钥,带“.pub”的是公钥。

Windows下配置SSH实现免密访问和远程端口转发
3.2.3 管理私钥

私钥的管理一般使用ssh-agent来管理,通过ssh-add添加私钥。

# 获取服务
Get-Service ssh-agent | Set-Service -StartupType Manual

# 启动服务器
Start-Service ssh-agent

# 运行服务
Get-Service ssh-agent

# 将私钥添加到ssh-agent,注意需要添加对应私钥的路径
ssh-add ~\.ssh\id_ed25519

注:要想免密登录,启动Agent服务,建议设置成自动启动。

Windows下配置SSH实现免密访问和远程端口转发
3.2.4 部署公钥

连接到ssh服务器之后可以通过scp将公钥文件复制到服务器,然后执行命令加载公钥

# 连接服务器后创建公钥存储目录,注意mkdir一般只能创建一级目录
ssh UserName@Server_IP mkdir C:\ProgramData\ssh\

# 使用scp拷贝公钥到服务器上
scp C:\Users\username\.ssh\id_ed25519.pub UserName@Server_IP:C:\ProgramData\ssh\administrators_authorized_keys

# 访问公钥文件,生效公钥
ssh --% UserName@Server_IP icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"

一般可能服务器会有多个公钥,先通过cd命令切换到公钥所在路径,然后可通过cat指令将公钥添加到公钥文件中,添加完之后重启ssh服务器(也可不重启,具体看情况,我是重启才有效)。

cat zero.pub >> administrators_authorized_keys

若公钥无法正常识别时,需要修改sshd_config文件配置,修改配置信息PubkeyAuthentication yes和

AuthorizedKeysFile.ssh/authorized_keys:

Windows下配置SSH实现免密访问和远程端口转发

若是管理员账户访问时需要配试匹配管理员账户信息:

Windows下配置SSH实现免密访问和远程端口转发
3.2.5 免密访问

当公钥和私钥均部署完毕后,再在本地主机上通过ssh访问服务器时即可不用输入密码,当然首次登录一般还是需要进行密码确认。

Agent服务需要设置成自动启动,否则重启电脑后仍然需要密码登录,或者启动Agent服务后才能这正常免密访问。

4、SSH文件传输

ssh文件传输可使用sftp或者scp进行操作,

sftp [-46aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
         [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit]
         [-o ssh_option] [-P port] [-R num_requests] [-S program]
         [-s subsystem | sftp_server] destination

scp [-346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
          [-l limit] [-o ssh_option] [-P port] [-S program] source ... target

scp拷问文件示例:

scp ubuntu@IP:.ssh/id_rsa.pub C:\xxx\xxx\.ssh\id_rsa.pub

最简单的操作就是指定文件两个文件路径直接拷贝。

若需要大量操作,还可以使用WinSCP软件来操作,网址如下:

WinSCP :: Official Site :: Free SFTP and FTP client for Windows

四、端口转发

ssh的精华功能是用作端口转发,可以通过端口转发将不安全连接转换成加密的数据连接,大大提高数据安全性。

  1. ssh参数

ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command]

常用参数如下:

  • -f:后台执行ssh指令

  • -C:允许压缩数据

  • -N:不执行远程指令

  • -R:远程端口转发

  • -L:本地端口转发

  • -D:动态转发

  • -g:允许远端主机连接本地转发的端口

  • -v:调试模式运行,可以打印一些日志信息

2.本地端口转发

通过-L参数进行本地端口转发,可实现对本地端口的访问转发到远程服务器上。

ssh -L [本地IP]本地端口:目标主机IP(或主机名):目标端口 Username@Server_IP
Windows下配置SSH实现免密访问和远程端口转发

通过本地端口转发,可以实现对本地主机的某个端口进行访问时,通过远程服务器中转,变成访问远程的服务器。

当远程端口省略时默认绑定到127.0.0.1。

3.远程端口转发

ssh -R [远程IP:]远程端口:目标IP:目标端口 UserName@Server_IP
Windows下配置SSH实现免密访问和远程端口转发

进行远程端口转发时,发起放必须在目标主机中发起,将对远程服务器主机指定端口的访问转发到本地主机上。

进行远程端口转发时,需要保证,服务器的安全组规则开放了端口:

Windows下配置SSH实现免密访问和远程端口转发

window可以通过“netstat ”查看端口配置情况,ip为0.0.0.0:3389匹配设置的远程ip时就标识配置成功。

PS C:\Windows\system32> netstat -ano|findstr "3389"
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING       1516
  TCP    [::]:3389              [::]:0                 LISTENING       1516
  UDP    0.0.0.0:3389           *:*                                    1516
  UDP    [::]:3389              *:*                                    1516

配置成功后可以在服务器的资源监视器查看对应端口的使用情况,若端口防火墙状态不是允许,需要在防火墙添加对应端口的入站规则,否则远程端口配置成功了,也无法正常转发,因为服务器该端口无法正常访问。

Windows下配置SSH实现免密访问和远程端口转发
Windows下配置SSH实现免密访问和远程端口转发

五、自动启动ssh

ssh运行依赖于客户端,一旦客户端关闭,ssh就会断开连接,可通过autossh等工具进行配置,自动连接ssh。

我打算使用python编辑一个小工具调用powershell自动连接ssh,然后添加成服务程序,设置自动启动(这个后面再整)。

六、问题处理

  1. WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!


@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:j2ygTU2u24P3v6ZG7RMqz66RRuNvvjpoWA1qEQO75pw.
Please contact your system administrator.
Add correct host key in C:\\Users\\xxx/.ssh/known_hosts to get rid of this message.
Offending RSA key in C:\\Users\\xxx/.ssh/known_hosts:10
RSA host key for ip(地址) has changed and you have requested strict checking.
Host key verification failed.

处理方法:执行ssh-keygen -R XXX(ip地址)指令文章来源地址https://www.toymoban.com/news/detail-434512.html

到了这里,关于Windows下配置SSH实现免密访问和远程端口转发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux学习笔记-Ubuntu系统下配置ssh免密访问,创建多用户免密访问

    Ubuntu是linux系统,虽然他是支持界面化操作的,一般用来做服务器用,所以配置ssh可以比较安全的进行访问,也方便在其他地方访问服务器,轻松省事。 Ubuntu系统版本: 使用uname -a指令获取系统版本信息 具体信息如下: 系统类型: Linux 主机名:ubuntu 内核版本:5.15.0-79-generi

    2024年02月05日
    浏览(50)
  • VsCode配置ssh免密远程连接服务器

    在我们日常开发学习的过程中,大多使用的都是linux系统,如果用linux上自带vim编辑器去开发,对大部分人来说都是不太习惯的,这时候我们就可以利用VsCode进行远程连接,下面是完整的配置过程。 1.安装Vscode 首先电脑要安装好VsCode,可以去VsCode官网(点我跳转)进行下载安装。

    2023年04月18日
    浏览(54)
  • 榨干家庭宽带公网ip------IP直连NAS远程访问(端口转发)

    基本情况:联通千兆宽带有公网ip,极空间z2s,路由器TPlink xdr4288 打开路由器后台页面,进入   工具箱/虚拟服务器, 点击    新建,需要输入  外部端口:和内部端口号相同                                        内部端口:NAS后台端口转发设置,查到端

    2024年02月15日
    浏览(36)
  • VSCode配置SSH远程免密登录服务器

    VScode远程开发时,每次都需要输入密码,其实同理可以和其他应用类似配置免密登录,流程也类似。 1.在本地主机生成公钥和秘钥         ssh-keygen 2.将公钥内容添加至服务器         将生成钥对时会给出其保存路径,找到公钥,复制内容,添加到如下文件。         s

    2024年02月13日
    浏览(54)
  • Windows本地快速搭建SFTP文件服务器,并端口映射实现公网远程访问

    转载自cpolar极点云的文章:如何在内网搭建SFTP服务器,并发布到公网可访问 下载地址:http://www.freesshd.com/?ctt=download 选择freeFTPD.exe下载 下载后,点击安装 安装之后,它会提示是否启动后台服务,Yes 安装后,点击开始菜单– freeFTPd, 注意 :这里要点击鼠标右键, 以管理员权

    2024年02月05日
    浏览(73)
  • Windows上配置IP端口转发

    在通常涉及到使用网络地址转换(NAT)规则,可以使用一些工具和命令行选项来实现。以下是在Windows上配置端口转发的一般步骤: **注意:端口转发需要管理员权限,因此请确保以管理员身份运行命令行工具。** 1. 打开命令提示符(Command Prompt)或Windows PowerShell。 2. 使用以下

    2024年02月03日
    浏览(40)
  • SSH隧道动态转发端口实现SOCKS代理 + HTTP代理(Privoxy)

    实现效果 :ssh连接远程服务器进行网络转发,本地服务连接网络代理 环境 :windows11/10 需要工具 :MobaXterm(ssh隧道端口转发),Privoxy(socks转http代理),一个云服务器 多种方法选一种即可:  命令行: ssh -C -N -D LOCAL_ADDRESS:LOCAL_PORT USER@REMOTE_ADDRESS Putty客户端 MobaXteam中的 Mo

    2023年04月09日
    浏览(39)
  • 简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录

    本文基于Linux上CentOS 7版本配合Xshell 7进行演示 目录 一.SSH简介 1.介绍 2.工作流程 二.具体配置免密步骤 1.配置前准备工作 2.正式配置过程 三.在服务器端配置SSH远程黑白名单 1.配置文件/etc/ssh/sshd_config部分参数解析 2.配置远程登录黑白名单 SSH用于计算机之间的加密登录,是一类

    2024年02月22日
    浏览(52)
  • Windows下使用SSH密钥实现免密登陆Linux服务器

    工具: win10、WinSCP 生成ssh密钥: 打开终端,使账号密码登录,输入命令 会提示密钥存放路径,一般存放在默认路径,直接回车即可,中间会提示输入密码,这里需要注意,如果设置密码,则每次登陆的时候需要输入此密码来登陆,如果不输入密码的话可以直接使用密钥登陆

    2023年04月14日
    浏览(50)
  • linux之Ubuntu系列(三)远程管理指令☞SSH 高级应用 RSA非对称加密 以及免密登录,配置别名

    对称加密 、非对称加密 1、对称加密中 加密和解密 使用的秘钥是同一个;非对称加密中采用两个密钥,一般使用公钥进行加密,私钥进行解密。 2、对称加密解密的速度 比较快 ,非对称加密和解密花费的 时间长、速度相对较慢 。 3、对称加密的安全性相对较低,非对称加密

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包