您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

Windows Terminal:SSH连接远程服务器

时间:2021-12-17 10:22:43  来源:  作者:LaLiLi

转自:
https://kermsite.com/p/wt-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 dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_dsa):  press ENTER
Enter 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/
weQh702ofXbDydZAKMcDvBJqRhUotQUwqV6HJxqoqPDlPGUUyo8RDIkLUIPRyq
ypZxmK9aCXokFiHoGCXfQ9imUP/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.com
Enter passphrase for key '/home/you/.ssh/id_dsa': ************
Last login: Mon Mar 24 02:17:27 2014 from ex.ample.com
shell.isp.com>

上面例子中,SSH 客户端使用私钥之前,会要求用户输入密码(passphrase),用来解开私钥。

需要注意的是在Windows terminal中ssh-copy-id无法使用,只能手动上传

密钥创建示例

附上我的密钥创建实例:

PS C:Usersadmin> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:Usersadmin/.ssh/id_rsa): C:UsersadminOneDrive/.ssh/id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in
C: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 -i
root@HK1:~# mkdir -p ~/.ssh
root@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 Terminal:SSH连接远程服务器

 

效果

同步问题

理论上是可以多端同步的,但是目前我两台电脑上的配置还没有同步,不知道为什么。

附录

参考文章

  1. Settings synchronization · Issue #1721 · microsoft/terminal (github.com)
  2. SSH 密钥登录 - SSH 教程 - 网道 (wangdoc.com)

版权信息

本文原载于kermsite.com,复制请保留原文出处。



Tags:SSH连接   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  Tags: SSH连接  点击:(16)  评论:(0)  加入收藏
今天在虚拟机里面安装了docker,利用docker起了一个centos。里面配置完成openssh后,利用xsheel连接docker里面的centos,发现特别慢,差不多要的1分钟才能连接上去。这肯定是有问题...【详细内容】
2021-07-21  Tags: SSH连接  点击:(131)  评论:(0)  加入收藏
SSH是连接Linux服务器,尤其是云服务器的标准方式。本文将简单介绍两个SSH的替代品(Mosh和Eternal Terminal),并对比其特点。SSH的不足SSH是连接Linux服务器的标准方式,阿里云、腾...【详细内容】
2020-05-25  Tags: SSH连接  点击:(565)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(8)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条