最近新配了个主机,有了多个设备,ssh连接的功能可以优化很多体验,便又开始鼓捣。以前都是windows连各种linux,比较方便;这次是在windows之间,还是小查了好一会儿,留个记录

SSH连接的基本模型便是: 客户端机器 ----connect----> 服务端机器。


SSH客户端准备

Windows操作系统(以win10为例)

操作系统会自带OpenSSH Client(通过 开始->设置->应用->可选功能 查看,似乎现在改到“系统”栏里了)

所需操作仅为生成自己的ssh公钥和私钥,为ssh连接的免密连接做准备(不免密到可以不用,但ssh key真的很常用)

  • 打开命令行(win+R cmd进入的就是home目录,一般为C:\Users\用户名这样最方便)
  • 输入命令ssh-keygen -t rsa -C "email@email.com",没有特殊要求的话一路回车即可。email部分随意仅用于生成rsa,一般就自己选个邮箱填好了
  • 此后,在C:\Users\用户名\.ssh\中会出现id_rsa和id_rsa.pub,分别为私钥钥和公钥。以后将公钥放到目标服务器机器的对应位置处可作为免密连接的前提

Linux操作系统

系统自带,同windows下的操作,默认在~/.ssh/


SSH服务器准备

Windows操作系统(以win10为例)

一般需要安装OpenSSH Server,进入 开始->设置->应用->可选功能 可安装。

操纵ssh服务器的常用命令:

Get-Service sshd	# 查看服务器状态(是否开启)
Start-Service sshd # 打开服务器
Stop-Service sshd # 关闭服务器
Restart-Service sshd # 重启服务器

应该会需要管理员权限,win+X呼出选项然后选择Windows PowerShell(管理员)应该最方便;用管理员权限打开cmd也好(其实一般单用户的电脑开启cmd时就是管理员的权限吧,不清楚;没有sudo真难受)

关于网传runas /user:administrator cmd的说法,我始终不知道administrator的密码是什么,但其实自己的用户也是管理员权限,换成自己的用户名应该也一样;但是感觉就是多此一举了

至此,其实就可以进行ssh连接的操作了:作为服务器的机子打开ssh服务器,作为客户端的机子通过ssh username@ip-address命令申请连接(一般端口就默认22, 也就是-p 22),然后输入服务器机子的密码就好。命令whoami可知username,命令ipconfig可知ip-address

曾经对这个密码是什么纠结了好久,结果还是自己的锅,见 https://www.zhihu.com/question/551485628/answer/2657902297

然而为了连接方便,会在配置一下达到免密的效果:

  • 在服务器C:\Users\用户名\.ssh\中新建authorized_keys文件,将客户端的公钥(id_rsa.pub)的内容放到服务器该文件中;
  • 修改服务器C:\ProgramData\ssh\中的ssdh_config文件
# 确保此3行正确且未被注释
PubkeyAuthentication yes # 这个一般初始状态为被注释,34行左右
AuthorizedKeysFile .ssh/authorized_keys # 这个一般未被注释,38行左右
PasswordAuthentication no # 这个一般初始状态为被注释,且配置为yes,51行左右 # 注释此2行,一般在文件尾
# Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
  • 重启ssh服务器,Restart-Service sshd,此后添加过公钥的客户端在登录服务器时将无需输入密码

Linux操作系统

一般服务器也会自带,如果没有就apt、pacman装一下;ssh连接的端口应该是22,需要打开(阿里云的话会有安全组,里面添加设置)

操纵ssh服务器的命令:

systemctl start sshd.service	# 开启ssh服务器
systemctl enable sshd.service # 允许开机自启ssh服务器
systemctl restart sshd.service # 重启ssh服务器

免密ssh连接:

将客户端(也就是访问方)的id_rsa.pub的内容添加到服务器(被访问端)的~/.ssh/authorized_keys中,然后就ok了。

命令行操作的话可以参考这个,不过可以先通过密码用vscode的remote-ssh连接,然后直接复制过去就行


Visual Studio Code 优化体验

在客户端使用vscode插件,会方便很多。下载插件"Remote - SSH",左下角出现绿色相向箭头图标则完成。

点击该图标,依次选择Connect to Host -> Configure SSH Hosts -> C:\Users\用户名.ssh\config,然后按照样例填写目标服务器Host相关信息

Host alias		# alias:自己起个别名便于区分
HostName hostname # hostname:即服务器的ip-address
User user # user:即服务器的username
# Port xxxx 若需配置端口则如是

进入Connect to Host 然后选择对应别名的服务器,即可开始连接;初次连接需要在服务器装相应的插件,选对应操作系统即可;若没有进行免密登录的配置,则几乎每部操作都要输密码,挺要命的。

scp传输文件

scp local_file remote_username@remote_ip:remote_folder

搭建个人多机器ssh连接平台的更多相关文章

  1. windows下配置VSCode免密SSH连接Linux机器

    先决条件 Windows下安装openssh软件(win10自带,可以不用搞) 从官网下载最新版本默认安装即可 VSCode安装插件 VSCode官方市场获取两个插件:"Remote - S ...

  2. 使用并发 ssh 连接来提升捞日志脚本执行效率

    问题背景 公司有个简单粗暴的日志服务,它部署在多台机器实例上,收集的日志记录在每台机器本地硬盘,写一个小时自动切换日志文件,硬盘空间写满了自动回卷,大约可以保存两三天的历史数据.为什么说它粗暴呢?原来 ...

  3. 【原创】C#搭建足球赛事资料库与预测平台(2) 数据库与XCode组件

            本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源C#彩票数据资料库系列文章总目录:[目录]C#搭建足球赛事资料库与预测平台与彩票数据分析目录  本篇文章开始将逐步 ...

  4. 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】

    背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人 ...

  5. Centos7.5搭建ELK-6.5.0日志分析平台

    Centos7.5搭建ELK-6.5.0日志分析平台 1. 简介 工作工程中,不论是开发还是运维,都会遇到各种各样的日志,主要包括系统日志.应用程序日志和安全日志,对于开发人员来说,查看日志,可以实时 ...

  6. Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)

    第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...

  7. SSH连接 NAT型 VirtualBox + LINUX

    1.首先登录到虚拟机中的Linux系统,查看一下使用NAT网卡的IP地址. 2.关闭虚拟机. 3.依次点击 "设置 -> 网络 -> (网络地址转换)端口转发",其中需 ...

  8. 关于Ubuntu远程ssh连接失败的问题

    在做机器人项目的时候,用的是Ubuntu的linux,跟之前的CentOS的操作命令有一点差别,就比如防火墙的名字,在Ubuntu系统中叫什么ufw,真是有点不好接受. 为了能模拟环境,我又弄了一台电 ...

  9. 远程SSH连接服务与基本排错

    为什么要远程连接Linux系统?? 在实际的工作场景中,虚拟机界面或物理服务器本地的窗口都是很少能够接触到的,因为服务器装完系统后,都要拉到IDC机房托管,如果是购买了云主机,更碰不到服务器本地显示器 ...

  10. 【Python】 SSH连接的paramiko

    paramiko *paramiko需要PyCrypto模块的支持 paramiko支持通过SSH协议进行一些操作,比如远程执行命令,上下传文件等等 用法: ① 远程命令 ssh = paramiko ...

随机推荐

  1. shell 将文件内容读取到 数组中

    #!/bin/bash prod_file=/home/vmuser/linbo/kettleDemo/job/test/CA-20201224.csv test_file=/home/vmuser/ ...

  2. Qt音视频开发06-海康sdk内核linux客户端

    一.前言 海康sdk的示例在官方是提供了的,但是无论UI还是交互简直是宇宙无敌的垃圾,猜测应该是初学者编写的,估计练手用的,所以老早就想把这个linux支持集成到自己的示例中,既然已经支持了windo ...

  3. Qt开源作品29-NTP服务器时间同步

    一.前言 很多软件都有时间同步的功能,尤其是Qt在嵌入式设备上的,有时候还有很多是没有UI界面的程序,而硬件上有个时钟,时间久了难免没有电,需要从服务器来同步时间来保证本地的时间是正确的,不然本地记录 ...

  4. LLM Defenses Are Not Robust😭to Multi-Turn Human Jailbreaks Yet😲

  5. 基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v6.2版已发布

    关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协议,支持iOS.A ...

  6. 浅说c/c++ coroutine

    浅说c/c++ coroutine 从上面我们可以得到关于协程的几个关键信息, 1.打破传统(regular)函数调用的限制. 2.stackful协程实现方式,基于独立栈,上下文切换. 3.stac ...

  7. Linux防火墙端口设置策略

    # 当我们在服务器上部署好我们的环境后,一定要检查一下防火墙的端口策略:否则客户端无法连接.# 查看防火墙状态 systemctl status firewalld # 查看防火墙设已开放的端口 # ...

  8. 「规则类怪谈」塔 - (preview)

      前段时间,大概五六月份,我很喜欢规则类怪谈.颓废的时候读了一大堆质量参差不齐的作品,试着编了一个世界观然后开写.咕着咕着磨到现在,至少情节大概成形了.最大的阻力在于物理规则的完备性和自洽性,为什么 ...

  9. MyBatis中的 10 个宝藏技巧!

    前言 说到 MyBatis,很多小伙伴都会用,但未必用得"惊艳". 实际上,这个轻量级的持久层框架还有很多隐藏的"宝藏技巧". 如果你能掌握这些技巧,不但能让开 ...

  10. [BZOJ P2771] 天才ACM

    [BZOJ P2771] 天才ACM 传送门 朴素算法 枚举终点 \(r\),对区间 \([l, r]\) 排序求校验值 \(sum\),比较 \(sum\) 和 \(t\) $ sum \le t ...