windows通过ssh连接虚拟机中的ubuntu步骤

本文介绍了如何在Linux(Ubuntu)端开启SSH服务,包括安装openssh-server、启动服务、检查服务状态以及修改服务端口。同时推荐了Windows用户使用Bitvise SSH客户端进行连接,因其具备命令窗口和文件窗口的便利性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux端开启ssh服务

1.安装openssh-server包

sudo apt-get install openssh-server 

  2.启动ssh server

sudo /etc/init.d/ssh start


3.确认ssh服务启动

ps -e | grep ssh

 

4.设定服务端口,设置完后重启服务

sudo vi /etc/ssh/sshd_config 

sudo /etc/init.d/ssh restart 

windos端设置连接配置

推荐使用工具bitvise,好处是既有命令窗口,又有文件窗口,非常方便!



<think>我们想要在Ubuntu虚拟机中通过SSH密钥认证连接Windows系统。这需要我们在Windows上设置SSH服务器,并配置公钥认证。以下是详细步骤: ### 步骤1:在Windows上安装并配置OpenSSH服务器 1. **安装OpenSSH服务器**(适用于Windows 10 1809及以上或Windows Server 2019): - 打开“设置”->“应用”->“可选功能”->“添加功能” - 找到“OpenSSH 服务器”并安装 或者使用PowerShell(管理员身份): ```powershell # 安装OpenSSH服务器 Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 # 启动并设置开机自启 Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' # 确认防火墙规则已配置(通常安装时会自动添加) Get-NetFirewallRule -Name *ssh* ``` 2. **配置SSH服务器允许公钥认证**: - 编辑配置文件 `C:\ProgramData\ssh\sshd_config`(使用管理员权限的文本编辑器): - 确保以下配置: ``` PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no # 为安全起见,禁用密码登录 ``` - 去掉注释(如果前面有#号,删除) - 重启服务: ```powershell Restart-Service sshd ``` ### 步骤2:在Windows上创建`.ssh`目录和`authorized_keys`文件 1. 打开命令提示符或PowerShell: ```cmd cd %USERPROFILE% mkdir .ssh cd .ssh type NUL > authorized_keys # 创建空文件 ``` 2. 设置权限(防止其他用户访问): - 右键点击`.ssh`文件夹 -> 属性 -> 安全 -> 高级 - 禁用继承并删除所有权限条目 - 添加当前用户(如Administrator)的完全控制权限 ### 步骤3:在Ubuntu虚拟机生成密钥对 在Ubuntu终端执行: ```bash ssh-keygen -t rsa -b 4096 ``` (按Enter使用默认路径,设置空密码以便自动登录) ### 步骤4:将Ubuntu公钥复制到Windows 1. 查看Ubuntu公钥: ```bash cat ~/.ssh/id_rsa.pub ``` 2. 复制公钥内容(以`ssh-rsa AAAAB3...`开头的一行) 3. 在Windows上,将复制的公钥内容追加到`%USERPROFILE%\.ssh\authorized_keys`文件中(每行一个公钥) ### 步骤5:从Ubuntu连接WindowsUbuntu终端使用以下命令连接: ```bash ssh username@windows_ip ``` 其中: - `username` 是Windows用户名(如Administrator) - `windows_ip` 是Windows主机的IP地址(可通过`ipconfig`在Windows上查看) ### 步骤6:测试自动登录 如果配置正确,连接时无需输入密码。 ### 常见问题解决 1. **权限问题**:确保Windows上`.ssh`目录和`authorized_keys`文件权限正确(仅当前用户可读写)。 2. **配置未生效**:检查`sshd_config`修改后是否重启了服务。 3. **防火墙拦截**:确保Windows防火墙允许22端口(或自定义的SSH端口)入站。 ### 引用说明 在Windows上配置OpenSSH服务器并设置密钥认证,可实现Ubuntu虚拟机Windows的安全无密码连接[^1][^2]。 §§相关问题§§ 1. 如何修改Windows SSH服务器的默认端口? 2. 如何配置多因素认证增强SSH安全性? 3. SSH连接超时或拒绝连接如何排查?</think>### 在Ubuntu虚拟机中通过SSH密钥认证连接Windows系统的完整指南 #### 步骤1:在Windows上配置SSH服务器 1. **安装OpenSSH服务器**(Windows 10/11): ```powershell # 管理员身份运行PowerShell Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 Start-Service sshd Set-Service -Name sshd -StartupType Automatic ``` 2. **修改SSH配置**: - 编辑 `C:\ProgramData\ssh\sshd_config` - 确保以下配置: ```conf PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys PasswordAuthentication no # 禁用密码登录 ``` 3. **创建.ssh目录**: ```powershell cd $env:USERPROFILE mkdir .ssh ``` #### 步骤2:在Ubuntu虚拟机生成密钥对 ```bash ssh-keygen -t rsa -b 4096 # 全部按Enter使用默认设置(空密码) ``` #### 步骤3:将Ubuntu公钥复制到Windows 1. **查看公钥内容**: ```bash cat ~/.ssh/id_rsa.pub # 复制输出的全部内容(以ssh-rsa开头) ``` 2. **在Windows创建授权文件**: - 在 `C:\Users\<你的用户名>\.ssh\` 创建 `authorized_keys` - 粘贴Ubuntu的公钥内容到文件中 - 设置文件权限(重要!): ```powershell icacls $env:USERPROFILE\.ssh\authorized_keys /inheritance:r icacls $env:USERPROFILE\.ssh\authorized_keys /grant:r "$env:USERNAME:(R)" ``` #### 步骤4:重启Windows SSH服务 ```powershell Restart-Service sshd ``` #### 步骤5:从Ubuntu连接测试 ```bash ssh <Windows用户名>@<Windows_IP地址> # 示例:ssh john@192.168.1.100 ``` 成功连接后应直接进入Windows命令行,无需密码。 #### 验证连接Ubuntu端): ```bash ssh -T <Windows用户名>@<Windows_IP地址> echo "连接成功!" # 成功会返回"连接成功!" ``` ### 连接示意图 ``` Ubuntu虚拟机 Windows主机 | | | 1. 生成密钥对(id_rsa) | |-------------------------------→| 2. 将公钥(id_rsa.pub)添加到authorized_keys | | | 3. ssh user@windows_ip | |------------------------------→| 4. 密钥自动认证 |←------------------------------| 5. 建立SSH会话 ``` ### 常见问题解决 1. **连接被拒绝**: - 检查Windows防火墙是否允许22端口 ```powershell New-NetFirewallRule -Name "OpenSSH" -DisplayName "OpenSSH Server" -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 ``` 2. **权限错误**: ```powershell # 重置.ssh目录权限 icacls $env:USERPROFILE\.ssh /reset icacls $env:USERPROFILE\.ssh /grant:r "$env:USERNAME:(F)" ``` 3. **密钥认证失败**: - 检查`sshd_config`中的`AuthorizedKeysFile`路径 - 验证公钥文件内容是否完整(无换行符) ### 安全增强建议 1. **修改默认端口**(编辑`sshd_config`): ```conf Port 2222 # 改为非标准端口 ``` 2. **限制登录用户**: ```conf AllowUsers <你的Windows用户名> ``` 3. **使用强加密算法**: ```conf Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com ``` ### 自动化脚本(Ubuntu端) 创建连接脚本 `connect_win.sh`: ```bash #!/bin/bash WIN_USER="your_windows_username" WIN_IP="192.168.1.100" # 替换为实际IP ssh -i ~/.ssh/id_rsa $WIN_USER@$WIN_IP "$@" ``` 使用:`./connect_win.sh <命令>` 或直接执行进入交互终端 ### 引用说明 通过SSH密钥对实现无密码认证,既提升安全性又便于自动化任务执行[^1]。密钥管理方案可有效简化多服务器环境下的认证流程[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值