最近新配了个主机,有了多个设备,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. Qt音视频开发12-mpv解码播放

    一.前言 之前玩了vlc解码和ffmpeg解码,前阵子有个客户需要换成mpv解码,于是研究了下mpv的使用方法,自从用了mpv以后发现爱不释手,这玩意天生适合极客和程序员啊,居然将各种处理封装成了命令 ...

  2. [转]cesium很全的入门教程-翻译官网和加入自己理解

    快速入门教程基本涵盖了大多数的CesiumJS API概念,主要用于Cesium基本入门,对Cesium有全面基本的了解和使用 一.概述本教程会一步一步教会你做一个项目,主要介绍如下内容: 配置1个C ...

  3. Github无法访问解决办法

    Github无法访问解决办法 问题描述:网速正常,但是github无法访问. 解决办法: 1.因为Github网址域名更换.查询网站https://ipchaxun.com/ ,例如输入github. ...

  4. TypeScript学习(一) - 一些基本的数据类型

    1. 数据类型 1.1 原始数据类型 boolean number string null undefiend Array Map Tuple 1.2 特殊类型 任意值类型(any) 联合类型 1. ...

  5. zsh 切换root用户后,命令执行后要卡顿2s左右

    在 oh-my-zsh 进入 包含 git 仓库目录时,会变的比平时慢/卡顿 原因是因为 oh-my-zsh 要**获取 git 更新信息 ** **解决办法: ** 设置 oh-my-zsh 不读取 ...

  6. 史上最全的Cursor IDE教程

    Cursor IDE 使用教程 1. 快速上手 1.1 入门流程 graph TD A[安装Cursor] --> B[首次启动] B --> C[选择主题和配置] C --> D[ ...

  7. CDS标准视图:维护包数据 I_MaintenancePackageData

    视图名称:维护包数据 I_MaintenancePackageData 视图类型:基础 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'IMAINTPCKGDATA' ...

  8. ASP 代码示例,可以生成一个8位随机字符串由字母和数字组成

    ChatGP回答的: 下面是一个 ASP 代码示例,可以生成一个8位随机字符串由字母和数字组成: ```Function generateRandomString(length) dim chars, ...

  9. SpringBoot-整合Open Feign

    -------------------------------------------------- Spring Boot简单整合Open Feign一.使用Open Feign1.引入依赖2.添加 ...

  10. 微服务实战系列(二)-注册中心Springcloud Eureka客户端-copy

    1. 场景描述 前几天介绍了下springcloud的Eureka注册中心(springcloud-注册中心快速构建),今天结合springboot-web介绍下eureka客户端服务注册. 2. 解 ...