windows安装并openssh server
A、对于新版的Windows10 或 Windows 2019,自带SSH Server, 可以开启它即可。
开启方法: 安装openssh 设置-应用-应用和功能-可选功能-添加功能 安装OpenSSH服务器即可
B、对于早期的Windows系统,如Windows 2008 R2 ,需要自己手工安装
手动安装openssh server
方式一:
- 登录翻墙软件(否则下载不成功)
- 使用管理员打开powerShell
- 查询是否安装openssh client 和 openssh server
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
一般情况下电脑默认安装了openssh client,但是没有安装openssh server
- 安装openssh server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
等待安装完成后,就可以在 设置/应用/可选功能 中找到OpenSSH服务器
方式二:
- 下载最新的二进制版本:
https://github.com/PowerShell/Win32-OpenSSH/releases
下载微软开源的openssh ,下载最新的二进制版本: Releases · PowerShell/Win32-OpenSSH
- 解压到C:\Program Files 并重命名为OpenSSH
- 启动Window PowerShell 并进入 C:\Program Files\OpenSSH 目录
- 输入命令安装sshd和ssh-agent服务
powershell -ExecutionPolicy Bypass -File install-sshd.ps1
启动windows的openssh server
在管理员界面的powershell中启动openssh Start-Service sshd
Start-Service sshd
设置开机启动
Set-Service sshd -StartupType Automatic
确认防火墙规则已配置,它应该由安装程序自动创建
在管理员界面的powershell中运行下面命令
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) { Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
如果出现“Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists.”说明是正常的
否则需要打开防火墙,启动22端口(也可使用控制面板中防火墙 高级 进行设置)
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
有时候即使启动了22端口,访问的时候仍然提示‘Operation not permitted’。这个时候可以尝试关闭当前需要连接其他服务器的服务器的防火墙或者修改出站规则(关于修改出站规则,并未做过多研究,请搜索iptables 及其参数)
在linux服务器尝试连接windows的ssh
ssh 电脑用户名@电脑IP
如果电脑带有密码的话,需要手动输入密码,输入成功后将会进入windows的ssh界面,默认进入当前用户的目录
如果连接报错:ssh: connect to host 10.10.140.52 port 22: Operation not permitted ,请联系网络管理员确认是否有任何限制
从linux传输文件到windows
在传输前,需要在linux上安装sshpass软件,这样传输的时候就可以显示的指定密码了
sudo apt install sshpass
安装成功后,执行下面的命令
sshpass -p windows的密码 scp linux的文件 widows的账号@windows的IP:windows的目标目录位置(如D:\logs\)或目标文件位置(如D:\logs\filename.txt)
如
sshpass -p Hzq1993@ scp 10.10.55.2_ fibocom@10.10.140.52:D:/logs/10.10.55.2_
此时,就可以在windows的目标目录位置看到存储的路径
参考:
安装 OpenSSH:https://learn.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse#使用 PowerShell 安装 OpenSSH
Linux之scp命令的介绍以及命令行输入密码参数执行方法和常见问题解决:https://blog.csdn.net/xu710263124/article/details/118085845
https://blog.csdn.net/denglavender/article/details/109631478