安装 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-agent
ssh-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_keys
authorized_keys
文件的编码要为 UTF-8, 而非 windows 默认编码 -
设置
authorized_keys
的访问权限FixUserFilePermissions.ps1
Comments
comments powered by Disqus