百科生活 投稿
关于【windows ssh 工具】:windows自带的ssh工具是干什么的(windows10开启ssh服务),今天小编给您分享一下,如果对您有所帮助别忘了关注本站哦。
- 内容导航:
- 1、如何从 Windows 上用 SSH 连接到 Linux
- 2、windows ssh 工具:windows自带的ssh工具是干什么的(windows10开启ssh服务)
1、如何从 Windows 上用 SSH 连接到 Linux
这篇文章展示了如何使用了流行的开源工具 PuTTY,建立一个从 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,它包含了许多选项,通过取消掉相关行的注释就可以激活:
# $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $# This is the sshd server system-wide configuration file. See# sshd_config(5) for more information.# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin# 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.Include /etc/ssh/sshd_config.d/*.conf#Port 22#AddressFamily any#ListenAddress 0.0.0.0#ListenAddress ::
没有取消任何注释的默认配置在这个示例中应该是可以工作的。要检查 SSH 守护进程是否已经运行,输入 systemctl status sshd:
$ systemctl status sshd● sshd.service - OpenSSH server daemon Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-06-22 11:12:05 UTC; 2 years 11 months ago Docs: man:sshd(8) man:sshd_config(5) Main PID: 577 (sshd) Tasks: 1 (limit: 26213) CGroup: /system.slice/sshd.service └─577 /usr/sbin/sshd -D -oCiphers=[aes256-gcm@openssh.com][5],chacha20-[...]
如果它处于未激活inactive状态,使用systemctl start sshd命令启动它。
2、设置远程控制台
在 Windows 下 下载 PuTTY 安装程序,然后安装并打开它。你应看到一个像这样的窗口:
在“主机名(或 IP 地址)Host Name (or IP address)”输入框,键入你的 Linux 系统的连接信息。本文设置了一个 Fedora 33 虚拟机,它使用桥接网络适配器,使我可以由 IP 地址 192.168.1.60连接这个系统。点击“打开Open”,应会如图示的打开一个窗口:
这是 SSH 的安全措施之一,是为了防止中间人攻击man-in-the-middle attack。消息中的指纹应该匹配 Linux 系统中放在/etc/ssh/ssh_host_ed25519_key.pub的密钥。PuTTY 将这个密钥以MD5 哈希值的方式打印出来。要检查它的真实性,切换到 Linux 系统并打开一个控制台,然后输入:
ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub
输出应该和 PuTTY 展示的指纹一致:
$ ssh-keygen -l -E md5 -f /etc/ssh/ssh_host_ed25519_key.pub256 MD5:E4:5F:01:050:F7C:A6:32 no comment (ED25519)
点击“是Yes”以确认 PuTTY 的安全提示。主机系统的指纹现在存储在 PuTTY 的信任列表中,其位于 Windows 的注册表中的:
HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys
输入正确的登录凭证,然后你应该进入控制台了,位置在你的用户主目录。
3、通过网络复制文件
除了远程控制台,你同样可以使用 PuTTY 通过 SSH 来传输文件。PuTTY 的安装目录在 C:\Program Files (x86)\PuTTY,在该目录下寻找ppscp.exe。你既可以使用它从 Linux 系统复制文件,也可以复制文件到 Linux 系统。
使用Windows + R然后输入cmd来打开命令提示符,从你的 Linux 用户主目录复制MYFile.txt到你的 Windows 主目录,输入:
C:\"Program Files (x86)"\PuTTY\pscp.exe stephan@192.168.1.60:/home/stephan/MyFile.txt .
要从 Windows 主目录复制文件到 Linux 用户主目录,输入:
C:\"Program Files (x86)"\PuTTY\pscp.exe MyFile.txt stephan@192.168.1.60:/home/stephan/
就像你也许已经发现的那样,复制的命令通常构造为:
pscp.exe
4、隧道化一个协议
假设你拥有一个 Linux 机器,为某些特别的应用运行一个基于 HTTP 的服务。你想从你的 Windows 机器通过互联网访问这个 HTTP 服务。而且,你不能将相关的 TCP 端口暴露在公网,因为:
- 这个服务通过 HTTP 而非 HTTPS 运行
- 根本没有用户管理和登录系统
乍一看,建立这种架构不产生可怕的漏洞似乎是不可能的。但是 SSH 可简单的为这种情况建立一个安全的解决方案。
我将用我的软件项目 Pythonic来演示这个过程。在容器中运行。Pythonic 作为容器运行,开放两个 TCP 端口:TCP 端口 7000(主要编辑器)和 TCP 端口 8000(code-server代码编辑器)。
要在一个 Linux 机器上安装 Pythonic ,运行:
podman pull pythonicautomation/pythonicpodman run -d -p 7000:7000 -p 8000:8000 pythonic
转向你的 Windows 机器,打开 PuTTy,转到 “连接Connection -> SSH -> 隧道Tunnels”。加入你要转发的两个 TCP 端口:
- 源:
7000/ 目标:localhost:7000 - 源:
8000/ 目标:localhost:8000
然后返回 “会话Session” 部分,并像之前那样建立一个 SSH 链接。打开网页浏览器,然后转到 http://localhost:7000;你应该看见像这样的窗口:
你成功的设置了端口转发!
警告: 如果你选择在公网上暴露 TCP 端口 22 ,不要使用易于猜测的登录凭证。你将接受来自全世界的登录请求,它们使用常见的、标准的登录凭证以尝试登录你的 Linux 机器。相反,只允许已知的用户登录。这种登录限制可以通过公钥加密来实现,它使用一个密钥对,其中公钥存储在 SSH 主机上,而私钥保留在客户端。
调试
如果你难以连接你的 Linux 机器,你可以跟踪你的 SSH 守护进程的处理过程:
journalctl -f -u sshd
这是一个普通的登录进程,但是其日志级别为 DEBUG,它看起来是这样的 :
了解更多
这篇文章几乎没有涉及到使用 SSH 的方法。如果你正在寻找一个特定用例的信息,你也许可以在互联网中找到无数的教程。我在工作中使用 PuTTY ,因为它易于设置,在两个操作系统间又具有良好的可操作性,使得它成为连接解决方案里的瑞士军刀。
(文内图片来自:Stephan Avenwedde,CC BY-SA 4.0)
via: https://opensource.com/article/21/6/ssh-windows
作者:Stephan Avenwedde选题:lujun9972译者:yjacks校对:wxy
2、windows ssh 工具:windows自带的ssh工具是干什么的(windows10开启ssh服务)
由于格式问题,部分链接、表格可能会失效,若失效请访问原文
密码登录 以及 通过密钥实现免密码登录
Dec 15, 2021
阅读时长: 6 分钟
简介
Windows terminal是新一代Windows终端。在Windows11中默认安装,只需要:
- win+R运行wt
- 或者在文件管理器任意位置右键在Windows终端中打开
即可唤起。
目前似乎没有对应的快捷键,可以自己设定。
Windows terminal内置支持ssh,无需额外安装软件就可以连接到服务器
推测是内置了openssh不过并不是完整版,有些命令不能使用。(当然大部分还是可以的)
优势:
- 系统自带,无需另外安装软件
- 界面美观好看,可以自定义
- 支持使用密钥,实现免密码登录
- 配置文件似乎可以多设备同步?(个人不太清楚,按照Github上某个issue的说法是可以的,但是我的似乎没有同步)
一行代码实现登录
打开Windows terminal,在power shell界面下,直接使用:
ssh user@ip例如:ssh kerm@52.184.**.**进行连接。
好处是方便,坏处是每一次都要输入密码。
使用密钥登录,免输密码
Windows terminal创建密钥的过程和openssh完全相同。
附上一段openssh密钥创建的教程(以及我的一些笔记),摘自:SSH 密钥登录 – SSH 教程 – 网道
SSH 密钥登录
SSH 默认采用密码登录,这种方法有很多缺点,简单的密码不安全,复杂的密码不容易记忆,每次手动输入也很麻烦。密钥登录是比密码登录更好的解决方案。
密钥是什么
密钥(key)是一个非常大的数字,通过加密算法得到。对称加密只需要一个密钥,非对称加密需要两个密钥成对使用,分为公钥(public key)和私钥(private key)。
SSH 密钥登录采用的是非对称加密,每个用户通过自己的密钥登录。其中,私钥必须私密保存,不能泄漏;公钥则是公开的,可以对外发送。它们的关系是,公钥和私钥是一一对应的,每一个私钥都有且仅有一个对应的公钥,反之亦然。
如果数据使用公钥加密,那么只有使用对应的私钥才能解密,其他密钥都不行;反过来,如果使用私钥加密(这个过程一般称为“签名”),也只有使用对应的公钥解密。
密钥登录的过程
SSH 密钥登录分为以下的步骤。
预备步骤,客户端通过ssh-keygen生成自己的公钥和私钥。
第一步,手动将客户端的公钥放入远程服务器的指定位置。
第二步,客户端向服务器发起 SSH 登录的请求。
第三步,服务器收到用户 SSH 登录的请求,发送一些随机数据给用户,要求用户证明自己的身份。
第四步,客户端收到服务器发来的数据,使用私钥对数据进行签名,然后再发还给服务器。
第五步,服务器收到客户端发来的加密签名后,使用对应的公钥解密,然后跟原始数据比较。如果一致,就允许用户登录。
ssh-keygen命令:生成密钥
密钥登录时,首先需要生成公钥和私钥。OpenSSH 提供了一个工具程序ssh-keygen命令,用来生成密钥。
直接输入ssh-keygen,程序会询问一系列问题,然后生成密钥。
$ ssh-keygen输入上面的命令以后,ssh-keygen会要求用户回答一些问题。
$ ssh-keygen -t dsaGenerating public/private dsa key pair.Enter file in which to save the key (/home/username/.ssh/id_dsa): press ENTEREnter passphrase (empty for no passphrase): ********Enter same passphrase again: ********Your identification has been saved in /home/username/.ssh/id_dsa.Your public key has been saved in /home/username/.ssh/id_dsa.pub.The key fingerprint is:14:ba:06:98:a8:98:ad:27:b5:ce:55:85:ec:64:37:19 username@shell.isp.com上面示例中,执行ssh-keygen命令以后,会出现第一个问题,询问密钥保存的文件名,默认是~/.ssh/id_dsa文件,这个是私钥的文件名,对应的公钥文件~/.ssh/id_dsa.pub是自动生成的。用户的密钥一般都放在主目录的.ssh目录里面。
注意所用目录应该是一个已经存在的.ssh/空文件夹(有ssh/文件夹,这个文件夹里面是空的),否则会报错。
接着,就会是第二个问题,询问是否要为私钥文件设定密码保护(passphrase)。这样的话,即使入侵者拿到私钥,还是需要破解密码。如果为了方便,不想设定密码保护,可以直接按回车键,密码就会为空。后面还会让你再输入一次密码,两次输入必须一致。注意,这里“密码”的英文单词是 passphrase,这是为了避免与 Linux 账户的密码单词 password 混淆,表示这不是用户系统账户的密码。
最后,就会生成私钥和公钥,屏幕上还会给出公钥的指纹,以及当前的用户名和主机名作为注释,用来识别密钥的来源。
公钥文件和私钥文件都是文本文件,可以用文本编辑器看一下它们的内容。公钥文件的内容类似下面这样。
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAvpB4lUbAaEbh9u6HLig7amsfywD4fqSZq2ikACIUBn3GyRPfeF93l/weQh702ofXbDydZAKMcDvBJqRhUotQUwqV6HJxqoqPDlPGUUyo8RDIkLUIPRyqypZxmK9aCXokFiHoGCXfQ9imUP/w/jfqb9ByDtG97tUJF6nFMP5WzhM= username@shell.isp.com上面示例中,末尾的username@shell.isp.com是公钥的注释,用来识别不同的公钥,表示这是哪台主机(shell.isp.com)的哪个用户(username)的公钥,不是必需项。
博主在使用时删除了末尾的注释,亲测可以使用
注意,公钥只有一行。因为它太长了,所以上面分成三行显示。
手动上传公钥
生成密钥以后,公钥必须上传到服务器,才能使用公钥登录。
OpenSSH 规定,用户公钥保存在服务器的~/.ssh/authorized_keys文件。你要以哪个用户的身份登录到服务器,密钥就必须保存在该用户主目录的~/.ssh/authorized_keys文件。只要把公钥添加到这个文件之中,就相当于公钥上传到服务器了。每个公钥占据一行。如果该文件不存在,可以手动创建。
用户可以手动编辑该文件,把公钥粘贴进去,也可以在本机计算机上,执行下面的命令。
$ cat ~/.ssh/id_rsa.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"上面示例中,user@host要替换成你所要登录的用户名和主机名。
注意,authorized_keys文件的权限要设为644,即只有文件所有者才能写。如果权限设置不对,SSH 服务器可能会拒绝读取该文件。
$ chmod 644 ~/.ssh/authorized_keys只要公钥上传到服务器,下次登录时,OpenSSH 就会自动采用密钥登录,不再提示输入密码。
$ ssh -l username shell.isp.comEnter passphrase for key '/home/you/.ssh/id_dsa': ************Last login: Mon Mar 24 02:17:27 2014 from ex.ample.comshell.isp.com>上面例子中,SSH 客户端使用私钥之前,会要求用户输入密码(passphrase),用来解开私钥。
需要注意的是在Windows terminal中ssh-copy-id无法使用,只能手动上传
密钥创建示例
附上我的密钥创建实例:
PS C:Usersadmin> ssh-keygenGenerating public/private rsa key pair.Enter file in which to save the key (C:Usersadmin/.ssh/id_rsa): C:UsersadminOneDrive/.ssh/id_rsaEnter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved inC:UsersadminOneDrive/.ssh/id_rsa.Your public key has been saved in C:UsersadminOneDrive/.ssh/id_rsa.pub.The key fingerprint is:***The key's randomart image is:***PS C:Usersadmin> cat C:UsersadminOneDrive/.ssh/id_rsa.pub//此步显示所创建的公钥,复制所有内容PS C:Usersadmin> ssh kerm@52.184.**.**kerm@HK1:~$ sudo -iroot@HK1:~# mkdir -p ~/.sshroot@HK1:~# nano ~/.ssh/authorized_keys//将之前复制的公钥贴入,我将=号后的内容删除,因为有多台设备利用这个公钥登录root@HK1:~# chmod 644 ~/.ssh/authorized_keys备注:为了实现多端同步免密登录,这里我密钥的存储位置选为了OneDrive同步文件夹。这样虽然不安全,但是很方便。
将登录信息写入配置文件,一键登录
也可以直接编辑配置文件。新版既然已经提供GUI,我就直接在GUI操作了。
导航栏下拉进入设置-配置文件-添加新配置文件-新建空配置文件。在命令行一栏填入:
ssh -i 密钥路径 user@ip示例:ssh -i C:UsersadminOneDrive/.ssh/id_rsa root@52.184.***.**其他参数,例如名称、外观可以参照另外一篇文章进行自定义。这里不做赘述。
保存,导航栏下拉找到对应配置名称即可一键连接。也可以使用快捷键:
效果
同步问题
理论上是可以多端同步的,但是目前我两台电脑上的配置还没有同步,不知道为什么。
本文关键词:windows 最好 ssh 工具,win10自带ssh工具,ssh工具有什么用,系统自带 ssh工具,ssh工具是啥。这就是关于《windows ssh 工具,windows自带的ssh工具是干什么的(Windows)》的所有内容,希望对您能有所帮助!
- 最近发表