windows 下配置SSH服务端和SSH连接
一、安装SSH
较新的windows操作系统一般会系统自带,或者在应用与功能开启
下载安装文件
https://github.com/PowerShell/Win32-OpenSSH
运行安装
msiexec /i D://openssh-win32.msi
检查 SSH 服务的状态。
在 PowerShell 中,运行:
Get-Service -Name ssh*
二、客户端密钥连接
1.生成密钥
ssh-keygen -t rsa -f D://id_rsa
注意如果要免密登录生成密钥时不要输入密码;
2. 复制 D://id_rsa.pub 文件 到服务器的 C:\Users\<user>\.ssh 文件夹 下的 authorized_keys文件,.ssh文件夹没有就新建,建不了.ssh 文件夹就用命令创建 命令 md .ssh
3. 修改服务器ssh 的配置 C:\ProgramData\ssh\sshd_config
#注释这两行 #Match Group administrators # AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys ##添加这三行 PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication yes
然后重新服务器的ssh 服务,或者在任务管理器中重启ssh服务
Restart-Service sshd
(当然,你直接把id_rsa.pub复制到服务器的C:\PROGRAMDATA/ssh/administrators_authorized_keys 也可以,但一般都是多用户登录,每个用户的公钥可能都不一样,所以使用 C:\Users\<user>\.ssh\authorized_keys 会更好)
4. 客户端连接服务器
ssh -i D:\\id_rsa Administrator@remotehost
第一次运行ssh的时候会有一个需要手动确认指纹的情况,使用-o StrictHostKeyChecking=no忽略手动确认,建议在一些CI环境使用
ssh -o StrictHostKeyChecking=no -i D:\\id_rsa Administrator@remotehost
5. 如果连接还是需要输入用户密码,尝试设置服务器用户的authorized_keys文件权限,注意替换你的用户名
icacls.exe "C:\Users\Administrator\.ssh\authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F" 管理员用户
icacls.exe "C:\Users\{username}\.ssh\authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F" /grant "{username}:F" 其他用户
如果连接提示 Permissions for 'D:\id_rsa' are too open. 则设置你本机的私钥的权限
icacls.exe "D:\id_rsa" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
或者在服务器 OpenSSH 的安装目录(一般是 C:\Program Files (x86)\OpenSSH)下 powershell 运行
.\FixHostFilePermissions.ps1
用于修复文件权限的 OpenSSH 实用程序脚本 ·PowerShell/Win32-OpenSSH Wiki (github.com)
文件操作
sftp.exe examples · PowerShell/Win32-OpenSSH Wiki (github.com)
sftp {username}@{remotehost} //用户名登录 sftp -i D:\\id_rsa {username}@{remotehost} //密钥登录
pwd //显示远程服务器所在目录
lpwd //显示本地服务器所在目录
cd /tests //进入远程服务器的当前所在目录的tests文件夹
get file1.txt //下载服务器的当前所在目录远程文件
put D://file2.txt //上传本地文件到远程服务器
exit //退出