搭建个人多机器ssh连接平台
最近新配了个主机,有了多个设备,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连接平台的更多相关文章
- windows下配置VSCode免密SSH连接Linux机器
先决条件 Windows下安装openssh软件(win10自带,可以不用搞) 从官网下载最新版本默认安装即可 VSCode安装插件 VSCode官方市场获取两个插件:"Remote - S ...
- 使用并发 ssh 连接来提升捞日志脚本执行效率
问题背景 公司有个简单粗暴的日志服务,它部署在多台机器实例上,收集的日志记录在每台机器本地硬盘,写一个小时自动切换日志文件,硬盘空间写满了自动回卷,大约可以保存两三天的历史数据.为什么说它粗暴呢?原来 ...
- 【原创】C#搭建足球赛事资料库与预测平台(2) 数据库与XCode组件
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源C#彩票数据资料库系列文章总目录:[目录]C#搭建足球赛事资料库与预测平台与彩票数据分析目录 本篇文章开始将逐步 ...
- 使用 Jenkins 搭建 iOS/Android 持续集成打包平台【转】
背景描述 根据项目需求,现要在团队内部搭建一个统一的打包平台,实现对iOS和Android项目的打包.而且为了方便团队内部的测试包分发,希望在打包完成后能生成一个二维码,体验用户(产品.运营.测试等人 ...
- Centos7.5搭建ELK-6.5.0日志分析平台
Centos7.5搭建ELK-6.5.0日志分析平台 1. 简介 工作工程中,不论是开发还是运维,都会遇到各种各样的日志,主要包括系统日志.应用程序日志和安全日志,对于开发人员来说,查看日志,可以实时 ...
- Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)
第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...
- SSH连接 NAT型 VirtualBox + LINUX
1.首先登录到虚拟机中的Linux系统,查看一下使用NAT网卡的IP地址. 2.关闭虚拟机. 3.依次点击 "设置 -> 网络 -> (网络地址转换)端口转发",其中需 ...
- 关于Ubuntu远程ssh连接失败的问题
在做机器人项目的时候,用的是Ubuntu的linux,跟之前的CentOS的操作命令有一点差别,就比如防火墙的名字,在Ubuntu系统中叫什么ufw,真是有点不好接受. 为了能模拟环境,我又弄了一台电 ...
- 远程SSH连接服务与基本排错
为什么要远程连接Linux系统?? 在实际的工作场景中,虚拟机界面或物理服务器本地的窗口都是很少能够接触到的,因为服务器装完系统后,都要拉到IDC机房托管,如果是购买了云主机,更碰不到服务器本地显示器 ...
- 【Python】 SSH连接的paramiko
paramiko *paramiko需要PyCrypto模块的支持 paramiko支持通过SSH协议进行一些操作,比如远程执行命令,上下传文件等等 用法: ① 远程命令 ssh = paramiko ...
随机推荐
- Qt开源作品8-通用控件移动
一.前言 在做一些项目的过程中,有一种应用场景是需要拖动设备在一个容器中,自由拖动摆放到合适的位置,然后保存对应设备的坐标位置信息,在软件启动好以后自动加载配置好的坐标位置信息,将每个设备移动到对应的 ...
- Vue cli 2.x 3.x及4.x区别
原文链接: 1.Vue cli 2.x 3.x及4.x区别 2.vue-cli2.0/3.0/4.0创建项目的方式差异解读和vue-cli4.0打包命令和环境配置
- 超图SuperMap Objects的API开发中线对象和点对象查询
注意:超图API开发中,如果将线对象和点对象都同时画在同一个CAD图层中,则在图查属性时,有可能现查询到线对象,而不能查询到点对象的信息.
- Web网页端IM产品RainbowChat-Web的v5.0版已发布
一.关于RainbowChat-Web RainbowChat-Web是一套Web网页端IM系统,是RainbowChat的姊妹系统(RainbowChat是一套基于开源IM聊天框架 MobileIM ...
- Docker Desktop 使用笔记
一.Docker Desktop是什么? Docker Desktop是适用于Windows的Docker桌面,是Docker设计用于在Windows 10上运行.它是一个本地 Windows 应用程 ...
- Unity TheHeretic Gawain Demo 异教徒Demo技术学习
<异教徒 Heretic>是Unity在2019年GDC大会上展示的一款技术Demo,部分资源于2020年中旬公开下载. 这款Demo主要用于展示Unity在数字人技术领域的最新进展,尤其 ...
- [转载]「服务」WCF中NetNamedPipeBinding的应用实例
「服务」WCF中NetNamedPipeBinding的应用实例 WCF中有很多种绑定,根据官方的说法,NetNamedPipeBinding是适用于同一台主机中不同进程之间的通信的. 今天终于实现了 ...
- docker网络配置:bridge模式、host模式、container模式、none模式
在docker平台里有四种网络模式,今天继续分享一下它们的常用知识,进一步加深对docker技术的理解. 1.docker网络模式分类 docker run创建Docker容器时,可以用--net选项 ...
- BGV12
BGV12,论文:(Leveled) Fully Homomorphic Encryption without Bootstrapping 密钥交换 ️ 矩阵\(A_{N*n_2}\) 矩阵\(B_{ ...
- Calendar日历类(抽象类)的使用
4. java.util.Calendar( 日历)类 类 Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能. 获取Calendar实例的方法 使用Calendar.get ...