步骤为:
- Windows安装OpenSSH服务端,并修改sshd_config配置文件
- Padavan客户端生成私钥与公钥
- 将生成的公钥复制到服务端
- Padavan成功免密登录Windows的OpenSSH
1、编辑OpenSSH服务端配置文件C:\ProgramData\ssh\sshd_config
- 修改配置项:PubkeyAuthentication yes 是一个 SSH服务器配置指令,它告诉SSH服务器(sshd)启用公钥认证机制,允许用户使用SSH密钥进行安全登录:
123默认:#PubkeyAuthentication yes修改:取消注释:PubkeyAuthentication yes
- 修改配置项:默认公钥文件的地址是C:\ProgramData\ssh\administrators_authorized_keys,若想改为C:\Users\用户名\.ssh\authorized_keys,则注释以下两条(注释任意一条就可以生效,不过搜的教程都是两条一起注释):
12345默认:Match Group administratorsAuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys修改:添加注释:#Match Group administrators#AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
2、Padavan客户端生成私钥与公钥(Dropbear选用ecdsa算法)
|
1 2 3 4 |
生成私钥和公钥,*注意dropbearkey生成的公钥信息是直接显示而不是生成文件,需自己复制保存: dropbearkey -t ecdsa -f ./id_ecdsa 若没及时保存公钥信息,这条指令也可再次显示某个私钥对应的公钥: dropbearkey -y -f ./id_ecdsa |
3、将生成的公钥复制到服务端
将生成的公钥信息,复制到服务端的C:\Users\用户名\.ssh\authorized_keys文件中
4、Padavan成功免密登录Windows的OpenSSH
Windows-服务-OpenSSH SSH Server-重新启动
验证登录:ssh 用户名@服务端IP
完成,客户端ssh不再提示输入密码,直接就登录了进去√
命令是否加引号没有区别,都能成功执行【shutdown /h】或者【ping ip】这种带空格的命令:
|
1 2 3 4 5 6 |
#这段代码会连接到指定的远程主机,并在远端执行ping命令: ssh -i ./id_ecdsa 用户名@服务端IP "ping 192.168.1.1" #命令不加引号也可运行shutdown /h ssh -i ./id_ecdsa 用户名@服务端IP shutdown /h #上面的语句保存成sh脚本,bash亦可以成功在远端执行命令: bash ssh-nas-shutdown-h.sh |
参考文章:
- Open SSH 使用记录 - 知乎
1234特别说明一点:如果远程主机没有用户 aaa,当你使用用户 aaa 登陆远程主机时,它仍会提示你输入密码,只不过你输入的密码永远都不可能正确。C:\Users\username\.ssh\config #用户级别配置,仅对当前的 username 用户生效。C:\ProgramData\ssh\ssh_config #全局级别配置,对所有用户生效,除非被用户级别的配置覆盖。
- Windows已经内置了OpenSSH客户端和服务器,无需安装额外的第三方SSH工具。你可以通过命令行工具(如 PowerShell 或 Command Prompt)来使用 OpenSSH。 - suv789 - 博客园
1234567891011121314151617181920使用SSH执行远程命令:如果你想在远程主机上执行简单的命令,可以通过ssh命令传递要执行的指令。例如:ssh user@remote-host "ls -l /var/www"此命令会连接到 remote-host,并在远程主机上执行 ls -l /var/www 命令,列出 /var/www 目录下的文件。你也可以将 PowerShell 脚本上传到远程服务器并通过 SSH 远程执行:将脚本上传到远程服务器:scp C:\local\script.ps1 user@remote-host:/home/user/remote-script.ps1通过 SSH 执行脚本:ssh user@remote-host "powershell -ExecutionPolicy Bypass -File /home/user/remote-script.ps1"这样,你就可以将本地的 PowerShell 脚本上传并在远程服务器上执行。-ExecutionPolicy Bypass 参数确保 PowerShell 脚本能够在远程环境中无阻碍地执行。记录远程命令输出到日志文件在 PowerShell 脚本中,你可以将执行的结果或错误信息记录到本地日志文件中:# 设置日志文件路径$logFile = "C:\path\to\logfile.txt"# 执行远程命令,并记录输出到日志文件$command = "df -h"$logOutput = ssh "$user@$host" "$command"# 将输出追加到日志文件$logOutput | Out-File -Append $logFile
- OpenWRT下ssh提示Exited: String too long的解决办法 - panFake
1若是将 ssh-keygens 生成的私钥文件给 Dropbear 客户端使用,会报错 ssh: Exited: String too long ,这是因为 Dropbear版本的SSH 需要特定格式的密钥,而不是由 ssh-keygen 生成的 PEM 格式。
- mkj/dropbear: Dropbear SSH
1234查看私钥文件对应的公钥:dropbearkey -y -f id_ecdsa将OpenSSH密钥转换为Dropbear:./dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key dropbear_dss_host_key