两台/多台Windows电脑之间配置ssh服务-手把手教程

什么是ssh及本文背景?

SSH 是建立在应用层基础上的安全协议,专为远程登录会话其他网络服务提供的安全性协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。相较于传统的网络服务程序,如ftp、pop和telnet,因为它们在网络上用明文传送口令和数据,所以是不安全的,而ssh传输协议是加密的,可保证数据传输的安全性。

网络上有很多配置Linux主机间ssh的教程,缺少Windows主机间ssh配置的详细说明,而大多数人使用的是Windows电脑,本文会详细记录笔者如何在多台Windows电脑间配置ssh和使用ssh。(由于本文记录的是通过自行安装OpenSSH的方式,获取ssh服务,所以对windows版本无限制)

为什么需要ssh?

工作中可能遇到上图这样的场景:公司局域网内有一台公共的Windows电脑作为服务器,多人都想登录进去,利用其环境,执行某脚本或工具,获得输出。或者说存在跨主机执行命令,传输文件等需求,此时就需要配置ssh服务,在两台电脑间配置了ssh服务后,两台电脑就如同一台电脑一样,互信,资源共享。调用远程主机上的脚本,如同调用自己主机上的脚本一样方便。再比如那台服务器是台docker驻留主机,大家都有需求去登录这台电脑,制作docker镜像,使用docker容器,而自己电脑不想安装docker,如果用windows的远程桌面,只能一人在线,而ssh就可以使多人同时在线,而且ssh命令还可以写进批处理脚本,实现自动化跨主机执行命令,再扩展下,多台服务器,如果都配置了ssh,任何一台工作主机,相当于拥有了多台服务器的工作能力。总之有了ssh,局域网内多台电脑的使用,就像一台电脑一样方便。

如何使用ssh?

Windows电脑上直到Windows10才推出了ssh服务,但如果两台Windows上的ssh服务版本不匹配,也运行不了,或者Windows 7电脑无法正确安装windows自带的ssh服务,而导致windows7电脑上用不了ssh服务。本文记录通过自行安装OpenSSH的方式,获取ssh服务,对windows版本无限制。

1. 下载OpenSSH安装包,分别在客户端主机和服务端主机上初步安装。

下载链接

然后选择合适的版本,笔者的为Win64版本。

解压到C:\Program Files\OpenSSH,建议是放在此目录下。  

建议将C:\Program Files\OpenSSH添加到环境变量path中,免得每次都要切到C:\Program Files\OpenSS才能使用该ssh,如果有多个版本的ssh,建议将该路径移至path变量的前边,使之成为默认的ssh工具。  

此时可以在命令行用where ssh和ssh -V,查看默认的ssh是否为刚才安装的版本。如果不是,则要重启电脑,让path变量重新生效。

备注:客户端和服务端主机都要安装上面的安装包。 

先按照3. 配置服务端中前三步,在ssh服务端安装并启用sshd服务,然后进入下面的配置客户端。

2. 配置客户端  

如果是客户端主机,安装完第一步后,接下来进入客户端配置环节。  

以管理员身份运行cmd,切换到openSSH路径下  

cd /d C:\Program Files\OpenSSH

1)初次链接服务端主机  

输入服务端的用户名和ip地址  

ssh serverusername@serveripdress

第一次连接,会收到如下所示的消息:  

The authenticity of host 'servername (10.00.00.001)' can't be established.
ECDSA key fingerprint is SHA256:.
Are you sure you want to continue connecting (yes/no)?

选输入yes后,该服务器主机会被添加到客户端主机上已知的SSH主机列表中。  

系统此时会提示你输入密码。 密码为服务端主机的开机密码,作为安全预防措施,密码在键入的过程中不会显示。  

连接后,你将看到如下Windows 命令行界面提示符,表示已进入到服务端主机。  

domain\username@SERVERNAME C:\Users\username>

2)客户端主机生产密钥对  

输入以下命令,用ssh-keygen生成密钥对  

ssh-keygen -t rsa

命令行里一路回车,在C:\Users\username\\.ssh下生成密钥对文件,id_rsa和id_rsa.pub,分别为私钥和公钥文件。  

3)客户端主机开启密钥代理  

首先开启ssh代理器  

此电脑右键管理->服务->OpenSSH Authentication Agent,启动类型选择自动,并且启动。后续客户端就可以委托ssh-agent代为免密登录,然后将密钥加入到ssh代理器中。  

ssh-add C:\Users\username\\.ssh\id_rsa

此时服务端还要做一些设置。

3. 配置服务端  

如果是服务端主机,安装完第一步后,接下来进入服务端配置环节。  

以管理员身份运行PowerShell,切换到openSSH路径下  

1)安装sshd服务  

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

2)开放22号端口(如果你在windows关闭了防火墙并配置了入站规则可以不执行如下命令,多执行不影响)  

netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

3)配置开机自启sshd服务  

此电脑右键管理->服务->OpenSSH SSH Server,启动类型选择自动,并且启动OpenSSH服务。

4)服务端收集客户端公钥,并设置免密登录。  

将第2.步客户端主机生成的公钥C:\Users\username\\.ssh\id_rsa.pub追加到服务端C:\Users\username\\.ssh\authorized_keys文件尾部,如果没有该文件,就新建该文件。  

修改服务端sshd配置,打开C:\ProgramData\ssh\sshd_config做如下修改  

 即,禁掉密码方式登录,改用密钥方式免密登陆。

5)重启服务端电脑,使sshd_config配置文件生效。

4. 在客户端电脑执行服务端电脑上命令(示例)  

1)登录进ssh服务端

打开ssh客户端电脑的命令行cmd,执行如下命令:

ssh serverusername@serveripdress

即可免密登录进服务端的主机中,像在客户端内部执行自己的命令一样,此时可以运行服务端内的可执行文件,脚本,执行命令等。如果想在批处理脚本中执行远程服务器的命令,请看下面。

2)跨主机直接执行命令

 打开ssh客户端电脑的命令行cmd,执行如下命令:

ssh serverusername@serveripdress "ssh服务端上要执行的命令"

命令可以是服务端上的某个脚本或者exe。

3)跨主机文件拷贝

打开ssh客户端电脑的命令行cmd,执行如下命令:

scp 客户端文件路径 serverusername@serveripdress:文件将要存放在服务端的路径
scp serverusername@serveripdress:文件将要存放在服务端的路径 客户端文件路径

上面表示将本地文件,通过ssh拷贝到远程服务器上,下面的表示将远程服务器上的文件,拷贝到本地。

**说明**:ssh客户端用ssh命令执行远程电脑(ssh服务端)上的exe软件,如果exe软件执行过程中有不同阶段的打印,只能在ssh执行exe结束后,在ssh客户端这边看到,即ssh每执行完一句命令才能看到打印回显,如果是本地执行一个exe,会实时显示其不同阶段的打印。但如果执行的是远程电脑上的批处理脚本,则打印是实时回显的。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值