Windows 啟動 SSH 服務
一、OpenSSH Server 安裝
以 Win10 系統為例
打開設置 -> 系統 -> 可選功能
在 添加的功能 查看是否安裝了 OpenSSH 服務 或者 OpenSSH Server
如果沒有安裝,找到 系統->添加可選功能 -> 查看功能->搜索 OpenSSH 服務 -> 勾選 -> 下一步->添加
等待下載安裝完成
二、啟動 SSH 服務
找到 cmd 以管理員身份運行
執行命令 net start sshd
開啟 SSH 服務
啟動成功輸出如下
C:\Windows\System32>net start sshd
OpenSSH SSH Server 服務正在啟動 .
OpenSSH SSH Server 服務已經啟動成功。
三、配置訪問權限
打開 控制面板
進入 系統和安全
點擊 Windows Defender 防火墻
選擇 高級設置
在左側選擇 入站規則,然后點擊右側的 新建規則
選擇 端口,點擊“下一步”
選擇 TCP,并在“特定本地端口中輸入 22,點擊 下一步
選擇 允許連接,點擊 下一步
根據需要,選擇適用的配置文件(域、專用、公用),點擊 下一步
輸入規則名稱(如“OpenSSH”),點擊 完成
提供 SSH 服務的電腦 統稱 SSH服務機
訪問 SSH 服務的電腦 下面統稱 訪問機
四、配置訪問機
訪問機:需要訪問 開啟 SSH 服務電腦的機器
在 訪問機 上配置 SSH 密鑰
查看是否創建了 ssh 密鑰
Windows 默認路徑一般是 C:\Users\Administrator\.ssh
Mac 默認路徑是 ~/.ssh
.ssh 路徑下包含一個 私鑰 id_rsa
一個公鑰 id_rsa.pub
如果沒有則執行下面命令生成即可
ssh-keygen -t rsa -C "username"
上面命令創建的 默認名是 id_rsa
我電腦上已經存在了,為了演示,我創建一個別的名字的
執行命令如下
ssh-keygen -t rsa -f ~/.ssh/jenkins_agent_key
生成文件及目錄為 ~/.ssh/jenkins_agent_key 和 ~/.ssh/jenkins_agent_key.pub
五、在 SSH服務機 配置憑證
SSH服務機:開啟 SSH 服務的機器
查看啟動 SSH 的信息,輸入命令
sc qc sshd
輸出如下
C:\Windows\System32>sc qc sshd
[SC] QueryServiceConfig 成功SERVICE_NAME: sshdTYPE : 10 WIN32_OWN_PROCESSSTART_TYPE : 3 DEMAND_STARTERROR_CONTROL : 1 NORMALBINARY_PATH_NAME : C:\Windows\System32\OpenSSH\sshd.exeLOAD_ORDER_GROUP :TAG : 0DISPLAY_NAME : OpenSSH SSH ServerDEPENDENCIES :SERVICE_START_NAME : LocalSystem
BINARY_PATH_NAME 顯示 ssh 啟動的是 C:\Windows\System32\OpenSSH\sshd.exe 到目錄 C:\Windows\System32\OpenSSH
ssh 配置文件為 C:\Windows\System32\OpenSSH\sshd_config_default
用文本打開 sshd_config_default 查看
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key# Ciphers and keying
#RekeyLimit default none# Logging
#SyslogFacility AUTH
#LogLevel INFO# Authentication:#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10#PubkeyAuthentication yes# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys#AuthorizedPrincipalsFile none# For this to work you will also need host keys in %programData%/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no# GSSAPI options
#GSSAPIAuthentication no#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none# no default banner path
#Banner none# override default of no subsystems
Subsystem sftp sftp-server.exe# Example of overriding settings on a per-user basis
#Match User anoncvs
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs serverMatch Group administratorsAuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
找到 AuthorizedKeysFile 部分顯示 AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
__PROGRAMDATA__/ssh/administrators_authorized_keys
這個文件控制訪問 SSH 公鑰驗證
__PROGRAMDATA__
在我的電腦上是路徑 C:\ProgramData
打開路徑 C:\ProgramData\ssh
沒有名字為 administrators_authorized_keys 的文件
創建一個 administrators_authorized_keys.txt 重命名將后綴名 .txt 刪除
從 訪問機 用文本打開剛才生成的公鑰 jenkins_agent_key.pub 文件,復制文件內容,粘貼到 administrators_authorized_keys 文件
注意:確保每個公鑰占據一行
保存并關閉 administrators_authorized_keys 文件
六、訪問機 測試 連接 SSH服務機
在訪問機上打開命令行輸入
# ssh -i ~/.ssh/my_key username@hostname
# ~/.ssh/my_key:私鑰文件名
# username:SSH服務機登錄賬號
# hostname:SSH服務機ip
ssh -i ~/.ssh/jenkins_agent_key Administrator@192.168.1.10
輸出如下
上圖顯示已經連接成功了,可以使用命令行操作了
一般默認創建的 ssh 密鑰是:私鑰id_rsa、公鑰 id_rsa.pub
不需要配置,系統默認使用的是這兩個 id_rsa、 id_rsa.pub
如果使用默認的 私鑰,就需要將公鑰 id_rsa.pub 內容復制,粘貼到 SSH 配置 AuthorizedKeysFile 對應的文件中
# ssh username@hostname
# username:SSH服務機登錄賬號
# hostname:SSH服務機ip
ssh Administrator@192.168.1.10