安装 Win32-OpenSSH
- 下载最新的发布版本 https://github.com/PowerShell/Win32-OpenSSH/releases
- 解压到
C:\Program Files\OpenSSH - 可以将该目录加入 Path
-
以管理员权限安装
SSHD和ssh-agent服务 :powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1 -
生成 Server Keys 并且限制这些文件的访问权限 , 以管理员权限运行 :
.\ssh-keygen.exe -A powershell.exe -ExecutionPolicy Bypass -File .\FixHostFilePermissions.ps1 -Confirm:$false -
在 Windows 防火墙中为 SSH 服务器开启一个 port:
- 可以执行如下命令 :
New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH- 或者直接在防火墙图形界面中增加一个 port 22 的规则 。
- 开启服务 :
net start sshd- 设置默认开启服务
Set-Service sshd -StartupType Automatic Set-Service ssh-agent -StartupType Automatic -
设置默认 ssh Shell: 在服务器端的 windows registry 中设置 ssh 的默认 shell,
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH\DefaultShell
设置使用 SSH 秘钥登陆
安装后 , 可以直接使用用户名和密码方式从 client 登陆到 host 上 :
ssh user@host
要使用密匙登陆需要采用以下步骤来设置 :
在 client 端 :
-
生成 key pair ( 即 private client key 和 public client key)
-
在
$HOME中建立.ssh目录mkdir $HOME\.ssh cd $HOME\.ssh -
生成 key pair
ssh-keygen -t rsa -f id_rsa
id_rsa 为 key 文件名 , 生成时会提示输入 passphrase 来保护 private key, 也可以为空 。
-
在 ssh-agent 上注册 private key
-
运行源码中的
FixUserFilePermissions.ps1来对进行权限设置FixUserFilePermissions.ps1 -
开启 ssh-agent:
net start ssh-agent -
将 key 注册到
ssh-agentssh-add id_rsa -
使用 private key 来登陆 host
ssh -i .\id_rsa user@host
在服务器端
-
同样在服务器端的用户目录
$HOME下建立.ssh\, 并在其中建立authorized_keys文件 :touch .ssh\authorized_keys mkdir .ssh\other_keys将之前客户端上生成的 public client key 即
id_rsa.pub文件 , 发送到 host 上的$HOME\.ssh\other_keys\文件夹下 , 在服务器上 , 将这个id_ras.pub内容写入authorized_keys文件中 。cat .\other_keys\id_rsa.pub > authorized_keysauthorized_keys文件的编码要为 UTF-8, 而非 windows 默认编码 -
设置
authorized_keys的访问权限FixUserFilePermissions.ps1
Comments
comments powered by Disqus