Redian新闻
>
如何从 Windows 上用 SSH 连接到 Linux | Linux 中国

如何从 Windows 上用 SSH 连接到 Linux | Linux 中国

科技
 
导读:使用开源的 PuTTY 工具,从 Windows 建立到 Linux 的 SSH 连接。       
本文字数:4986,阅读时长大约:6分钟

在 Linux 世界中,安全外壳(secure shell)(SSH)协议是最为常用的、通过命令行控制远程计算机的方式。SSH 是真正的 Linux 原创,但是它在 Windows 世界中也越来越流行。甚至有了一份官方的 Windows 的 SSH 文档🔗 docs.microsoft.com,那篇文档阐述了使用 OpenSSH🔗 www.openssh.com 控制 Windows 的方法。

这篇文章展示了如何使用了流行的开源工具 PuTTY🔗 www.putty.org,建立一个从 Windows 到 Fedora 33 Linux 系统的 SSH 连接。

使用 SSH 的方法

SSH 使用客户端-服务器模式,即 SSH 客户端会创建到 SSH 服务端的连接。SSH 服务器通常会作为守护进程(Daemon)运行,所以它常被称为 SSHD。你很难找到一个不自带 SSH 守护进程的 Linux 发行版。在 Fedora 33 中,已安装了 SSH 守护进程,但是并未激活。

你可以使用 SSH 控制几乎所有的 Linux 机器,无论它是作为虚拟机还是作为网络上的物理设备运行。一个常见的用例是无头(headless)配置的嵌入式设备,如树莓派。SSH 也可以用做一个其它网络服务的隧道。因为 SSH 连接是加密的,所以你可以使用 SSH 作为一个任何默认不提供加密的协议的传输层。

在这篇文章中,我将解释使用 SSH 的四个方式:1、如何在 Linux 端配置 SSH 守护进程;2、如何设置远程控制台连接;3、如何通过网络复制文件,4. 如何将 SSH 作为某些协议的隧道。

1、配置 SSHD

将 Linux 系统(文中是 Fedora 33)作为 SSH 服务器,允许 PuTTY SSH 客户端进行连接。首先,检查守护进程的 SSH 配置。配置文件放在 /etc/ssh/sshd_config,它包含了许多选项,通过取消掉相关行的注释就可以激活:

  1. #       $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
  2. # This is the sshd server system-wide configuration file.  See
  3. # sshd_config(5) for more information.
  4. # This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
  5. # The strategy used for options in the default sshd_config shipped with
  6. # OpenSSH is to specify options with their default value where
  7. # possible, but leave them commented.  Uncommented options override the
  8. # default value.
  9. Include /etc/ssh/sshd_config.d/*.conf
  10. #Port 22
  11. #AddressFamily any
  12. #ListenAddress 0.0.0.0
  13. #ListenAddress ::

没有取消任何注释的默认配置在这个示例中应该是可以工作的。要检查 SSH 守护进程是否已经运行,输入 systemctl status sshd

  1. $ systemctl status sshd
  2. sshd.service - OpenSSH server daemon
  3.    Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
  4.    Active: active (running) since Fri 2018-06-22 11:12:05 UTC; 2 years 11 months ago
  5.      Docs: man:sshd(8)
  6.            man:sshd_config(5)
  7.  Main PID: 577 (sshd)
  8.     Tasks: 1 (limit: 26213)
  9.    CGroup: /system.slice/sshd.service
  10.            └─577 /usr/sbin/sshd -D -oCiphers=[aes256-gcm@openssh.com][5],chacha20-[...]

如果它处于未激活(inactive)状态,使用 systemctl start sshd 命令启动它。

2、设置远程控制台

在 Windows 下 下载 PuTTY 安装程序🔗 www.chiark.greenend.org.uk,然后安装并打开它。你应看到一个像这样的窗口:

PuTTY configuration screen

在“主机名(或 IP 地址)(Host Name (or IP address))”输入框,键入你的 Linux 系统的连接信息。本文设置了一个 Fedora 33 虚拟机,它使用桥接网络适配器,使我可以由 IP 地址 192.168.1.60 连接这个系统。点击“打开(Open)”,应会如图示的打开一个窗口:

PutTTY security alert

这是 SSH 的安全措施之一,是为了防止中间人攻击🔗 en.wikipedia.org(man-in-the-middle attack)。消息中的指纹应该匹配 Linux 系统中放在 /etc/ssh/ssh_host_ed25519_key.pub 的密钥。PuTTY 将这个密钥以 MD5 哈希值🔗 en.wikipedia.org 的方式打印出来。要检查它的真实性,切换到 Linux 系统并打开一个控制台,然后输入:

  1. ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub

输出应该和 PuTTY 展示的指纹一致:

  1. $ ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub
  2. 256 MD5:E4:5F:01:05:D0:F7:DC:A6:32 no comment (ED25519)

点击“(Yes)”以确认 PuTTY 的安全提示。主机系统的指纹现在存储在 PuTTY 的信任列表中,其位于 Windows 的注册表中的:

  1. HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys

输入正确的登录凭证,然后你应该进入控制台了,位置在你的用户主目录。

Logged in to SSH

3、通过网络复制文件

除了远程控制台,你同样可以使用 PuTTY 通过 SSH 来传输文件。PuTTY 的安装目录在 C:\Program Files (x86)\PuTTY,在该目录下寻找 ppscp.exe。你既可以使用它从 Linux 系统复制文件,也可以复制文件到 Linux 系统。

使用 Windows + R 然后输入 cmd 来打开命令提示符,从你的 Linux 用户主目录复制 MYFile.txt 到你的 Windows 主目录,输入:

  1. C:\"Program Files (x86)"\PuTTY\pscp.exe [email protected]:/home/stephan/MyFile.txt .

要从 Windows 主目录复制文件到 Linux 用户主目录,输入:

  1. C:\"Program Files (x86)"\PuTTY\pscp.exe MyFile.txt [email protected]:/home/stephan/

就像你也许已经发现的那样,复制的命令通常构造为:

  1. pscp.exe <source> <target>

4、隧道化一个协议

假设你拥有一个 Linux 机器,为某些特别的应用运行一个基于 HTTP 的服务。你想从你的 Windows 机器通过互联网访问这个 HTTP 服务。而且,你不能将相关的 TCP 端口暴露在公网,因为:

1. 这个服务通过 HTTP 而非 HTTPS 运行
2. 根本没有用户管理和登录系统

乍一看,建立这种架构不产生可怕的漏洞似乎是不可能的。但是 SSH 可简单的为这种情况建立一个安全的解决方案。

我将用我的软件项目 Pythonic🔗 github.com 来演示这个过程。在容器中运行。Pythonic 作为容器运行,开放两个 TCP 端口:TCP 端口 7000(主要编辑器)和 TCP 端口 8000(code-server🔗 github.com 代码编辑器)。

要在一个 Linux 机器上安装 Pythonic ,运行:

  1. podman pull pythonicautomation/pythonic
  2. podman run -d -p 7000:7000 -p 8000:8000 pythonic

转向你的 Windows 机器,打开 PuTTy,转到 “连接(Connection) -> SSH -> 隧道(Tunnels)”。加入你要转发的两个 TCP 端口:

◈ 源:7000 / 目标:localhost:7000
◈ 源:8000 / 目标:localhost:8000

Port forwarding in PuTTY

然后返回 “会话(Session)” 部分,并像之前那样建立一个 SSH 链接。打开网页浏览器,然后转到 http://localhost:7000;你应该看见像这样的窗口:

Pythonic

你成功的设置了端口转发!

警告: 如果你选择在公网上暴露 TCP 端口 22 ,不要使用易于猜测的登录凭证。你将接受来自全世界的登录请求,它们使用常见的、标准的登录凭证以尝试登录你的 Linux 机器。相反,只允许已知的用户登录。这种登录限制可以通过 公钥加密🔗 opensource.com 来实现,它使用一个密钥对,其中公钥存储在 SSH 主机上,而私钥保留在客户端。

调试

如果你难以连接你的 Linux 机器,你可以跟踪你的 SSH 守护进程的处理过程:

  1. journalctl -f -u sshd

这是一个普通的登录进程,但是其日志级别为 DEBUG,它看起来是这样的 :

LogLevel DEBUG output

了解更多

这篇文章几乎没有涉及到使用 SSH 的方法。如果你正在寻找一个特定用例的信息,你也许可以在互联网中找到无数的教程。我在工作中使用 PuTTY ,因为它易于设置,在两个操作系统间又具有良好的可操作性,使得它成为连接解决方案里的瑞士军刀。

(文内图片来自:Stephan Avenwedde,CC BY-SA 4.0🔗 creativecommons.org


via: https://opensource.com/article/21/6/ssh-windows

作者:Stephan Avenwedde 选题:lujun9972 译者:yjacks 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


LCTT 译者 :yjacks
🌟🌟
翻译: 2.0 篇
|
贡献: 3 天
2022-07-20
2022-07-22
https://linux.cn/lctt/yjacks
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
硬核观察 #678 火星快车号上 Windows 98 时期的软件得到了更新Fedora Linux 37 即将正式支持树莓派 4 | Linux 中国开源朗读者:我是如何帮助妈妈从 Windows 切换至 Linux 的 | Linux 中国在 Linux 上使用 Bash 创建一个临时文件 | Linux 中国Kuro:非官方的微软 To-Do Linux 桌面客户端 | Linux 中国替换掉公司那台处理财务税务不得不用的 Windows教你如何管理多个 SSH 连接Linux Mint 接管 Timeshift 备份工具的开发,并作为一款 XApp 来维护 | Linux 中国Fedora Linux 37 的内核 5.18 测试周到了,一起来做贡献吧! | Linux 中国在 Linux 上使用 sudo 命令的 5 个理由 | Linux 中国如何在 Windows 中检查计算机正常运行时间Fedora Linux 的各种版本 | Linux 中国新疆遭遇种族灭绝?如何从源码编译 GNOME Shell 和应用 | Linux 中国如何使用 Dockerfile 创建自定义 Docker 镜像 | Linux 中国用惯 Linux 的人第一次用 Windows 或 macOS 会怎样? | Linux 中国如何在 Linux 中使用 Pandoc 转换文件格式 | Linux 中国Windows对俄“断供”,国产操作系统还好用吗?如何在 Ubuntu/Linux 和 Windows 之间共享文件夹 | Linux 中国Linux Mint 21 “Vanessa” 的 10 大特色 | Linux 中国如何在 Ubuntu 22.04 LTS 中安装 Docker 和 Docker Compose | Linux 中国核酸检测做假,假阳与假阴哪个危害大?忘掉疫情的美国名牌大学毕业典礼7 个基于 Fedora Linux 的最佳发行版 | Linux 中国在 Windows 上使用开源屏幕阅读器 NVDA | Linux 中国修复 Ubuntu Linux 中 “Command ‘python’ not found” 的错误 | Linux 中国致盲 windows defender如何双启动 Ubuntu 22.04 LTS 和 Windows 11 | Linux 中国分裂使 Linux 超越 Windows 的梦想破灭了 | Linux 中国如何在 Fedora Linux 中安装多媒体编码器 | Linux 中国哇!Torvalds 为自己的 Apple M2 Macbook 专门修改了 Fedora Linux | Linux 中国Linux 下的 Docker 入门教程 | Linux 中国为什么上海的康平路不能算是“大院”? 因为没有北京那种“大院文化”Shanghai Emerges From Lockdown to Familiar Sights and Sounds看到美军“飞虎队”援助我们抗日的实物
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。