当前位置: 首页 > 科技观察

如何从WindowsSSH到Linux

时间:2023-03-14 08:30:42 科技观察

在Linux世界中,安全外壳(SSH)协议是从命令行控制远程计算机的最常用方法。SSH是真正的Linux原创,但它在Windows世界中也越来越受欢迎。甚至还有一个官方的WindowsSSH文档解释了如何使用OpenSSH控制Windows。这篇文章展示了如何使用流行的开源工具PuTTY建立从Windows到Fedora33Linux系统的SSH连接。SSH使用方法SSH使用客户端-服务器模型,即SSH客户端创建到SSH服务器的连接。SSH服务器通常作为守护进程运行,因此常被称为SSHD。您很难找到不附带SSH守护程序的Linux发行版。在Fedora33中,SSH守护进程已安装但未激活。您可以使用SSH控制几乎任何Linux机器,无论它是作为虚拟机运行还是作为网络上的物理设备运行。一个常见的用例是无头配置的嵌入式设备,例如RaspberryPi。SSH还可以用作通向其他网络服务的隧道。因为SSH连接是加密的,所以您可以将SSH用作任何默认情况下不提供加密的协议的传输层。在这篇文章中,我将讲解SSH的四种使用方式:1.如何在Linux端配置SSH守护进程;2.如何建立远程控制台连接;3、如何通过网络复制文件;4.如何使用SSH作为某些协议的隧道。1、配置SSHD,使用Linux系统(本文为Fedora33)作为SSH服务器,允许PuTTYSSH客户端连接。首先,检查守护进程的SSH配置。配置文件放在/etc/ssh/sshd_config,里面有很多选项,取消相关行的注释即可激活:#$OpenBSD:sshd_config,v1.1002016/08/1512:32:04naddyExp$#这是sshd服务器系统范围的配置文件。有关详细信息,请参阅#sshd_config(5)。#这个sshd是用PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin编译的#该策略用于默认sshd_config中的选项#OpenSSH将在#可能的情况下使用默认值指定选项,但将它们保留在注释中。未注释的选项覆盖#默认值。包括/etc/ssh/sshd_config.d/*.conf#Port22#AddressFamilyany#ListenAddress0.0.0.0#ListenAddress::没有任何未注释的默认配置应该在这个例子中工作。要检查SSH守护程序是否正在运行,请输入systemctlstatussshd:$systemctlstatussshdsshd.service-OpenSSH服务器守护程序已加载:已加载(/usr/lib/systemd/system/sshd.service;已启用;供应商预设:已启用)活动:活动(运行)自星期五2018-06-2211:12:05UTC;2年11个月前Docs:man:sshd(8)man:sshd_config(5)MainPID:577(sshd)Tasks:1(limit:26213)CGroup:/system.slice/sshd.service└─577/usr/sbin/sshd-D-oCiphers=[aes256-gcm@openssh.com][5],chacha20-[...]如果它处于非活动状态,请使用systemctlstartsshd命令启动它。2.设置远程控制台在Windows下下载PuTTY安装程序,安装并打开。您应该看到这样一个窗口:PuTTY配置屏幕在“主机名(或IP地址)”输入框中,键入您的Linux系统连接信息。本文设置了一个带有桥接网络适配器的Fedora33虚拟机,允许我从IP地址192.168.1.60连接到系统。点击“打开”,应该会打开一个窗口,如图:PutTTYsecurityalert这是SSH防止中间人攻击的安全措施之一。消息中的指纹应与Linux系统上/etc/ssh/ssh_host_ed25519_key.pub中的密钥匹配。PuTTY将此密钥打印为MD5散列。要检查其真实性,请切换到您的Linux系统并打开控制台,然后键入:ssh-keygen-l-Emd5-f/etc/ssh/ssh_host_ed25519_key.pub输出应与PuTTY显示的指纹相匹配:$ssh-keygen-l-Emd5-f/etc/ssh/ssh_host_ed25519_key.pub256MD5:E4:5F:01:05:D0:F7:DC:A6:32nocomment(ED25519)单击是确认PuTTY的安全警告。主机系统的指纹现在存储在PuTTY的信任列表中,该列表位于Windows注册表中:HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys输入正确的登录凭据,然后您应该进入位于用户主目录下的控制台.登录SSH3,通过网络复制文件除了远程控制台,还可以使用PuTTY通过SSH传输文件。PuTTY的安装目录为C:\ProgramFiles(x86)\PuTTY,在该目录下寻找ppscp.exe。您可以使用它从Linux系统复制文件或向Linux系统复制文件。使用Windows+R输入cmd打开命令提示符,将Linux用户主目录下的MYFile.txt复制到Windows主目录下,输入:C:\"ProgramFiles(x86)"\PuTTY\pscp.exestephan@192.168.1.60:/home/stephan/MyFile.txt。要将文件从Windows主目录复制到Linux用户主目录,请输入:C:\"ProgramFiles(x86)"\PuTTY\pscp.exeMyFile.txtstephan@192.168.1.60:/home/stephan/如您所愿可能已经发现,复制命令的结构通常为:pscp.exe4、协议隧道假设您有一个Linux机器,为某些特定应用程序运行基于HTTP的服务。您想要从您的Windows计算机通过Internet访问此HTTP服务。此外,您不能将相关的TCP端口暴露给公共网络,因为:该服务通过HTTP而不是HTTPS运行根本没有用户管理和登录系统乍一看,构建这种架构似乎不可能不产生可怕的漏洞。但是SSH可以轻松地为这种情况创建一个安全的解决方案。我将用我的软件项目Pythonic来演示这个过程。在容器中运行。Pythonic作为一个容器运行,打开了两个TCP端口:TCP端口7000(主编辑器)和TCP端口8000(代码服务器代码编辑器)。要在Linux机器上安装Pythonic,请运行:转到您的Windows机器,打开PuTTy,转到Connection->SSH->Tunnels。添加你要转发的两个TCP端口:Source:7000/Destination:localhost:7000Source:8000/Destination:localhost:8000在PuTTY中进行端口转发并返回“Session”部分,和之前一样建立SSH连接。打开网络浏览器并转到http://localhost:7000;你应该看到一个像这样的窗口:Pythonic你已经成功地设置了端口转发!警告:如果您选择在公共网络上公开TCP端口22,请不要使用易于猜测的登录凭据。您将接受来自世界各地的登录请求,使用通用的标准登录凭据尝试登录您的Linux机器。相反,只允许已知用户登录。此登录限制可以通过公钥加密实现,它使用密钥对,其中公钥存储在SSH主机上,私钥保存在客户端上。调试如果您在连接到您的Linux机器时遇到问题,您可以跟踪您的SSH守护进程:这是一个正常的登录过程,但日志级别为DEBUG,它看起来像这样:LogLevelDEBUG输出了解更多本文几乎没有涉及关于如何使用SSH。如果您要查找有关特定用例的信息,您可能可以在Internet上找到无数教程。我在工作中使用PuTTY,因为它易于设置并且在两个操作系统上都运行良好,使其成为连接解决方??案的瑞士军刀。(文中图片来自:StephanAvenwedde,CCBY-SA4.0)