最近新配了个主机,有了多个设备,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. 夜莺 v8 第一个版本来了,开始做有意思的功能了

    夜莺 v8 大版本已经启动开发,预计 25 年 7.8 月份发正式版,相比 v7 大概会做四五个大功能,每个功能做完了做稳定了都会提前放出来供大家体验,虽然以 beta 来命名,实际是稳定的,大家可以 ...

  2. Python爬虫requests判断请求超时并重新post/get发送请求

    Python爬虫requests判断请求超时并重新post/get发送请求在使用Python爬虫中,你可以使用requests库来发送网络请求.为了判断请求超时并重新发送请求,你可以设置一个超时时间, ...

  3. JDBC核心6步

    1JDBC简介 java DataBase Connectivity,又称java数据库连接 是独立于任何数据库管理系统的api java提供接口规范,由各个数据库厂商提供接口的实现,厂商提供的实现封 ...

  4. Qt开发经验小技巧241-245

    QString类是我个人认为Qt所有类中的精华,封装的无可挑剔.内置了各种进制数据的转换,比如将数据转成10进制.16进制显示,或者将10进制.16进制数据转成字符串显示.这里很容易忽略的一点就是,很 ...

  5. Qt开发经验小技巧201-205

    编译生成debug版本动态库,文件末尾自动加上d结尾. CONFIG(debug, debug|release) { win32: TARGET = $$join(TARGET,,,d) mac: T ...

  6. Linux服务器环境安装mysql

    背景 1.安装环境:kvm虚拟机 2.运行环境:linux 3.架构:x86 4.安装mysql版本:mysql-5.7 1.安装准备 # Mysql官网 https://downloads.mysq ...

  7. G1原理—1.G1回收器的分区机制

    大纲 1.G1垃圾回收器的分区(Region大小+G1分区+Region过大过小和计算) 2.Region大小的计算原理(先转字节然后确定2的n次幂再通过1左移n位) 3.新生代分区及自动扩展(新生代 ...

  8. Solution -「AGC 058D」Yet Another ABC String

    \[\mathfrak{Defining~\LaTeX~macros\dots} \newcommand{\chr}[1]{\underline{\texttt{#1}}} \] \(\mathscr ...

  9. Qwen2ForSequenceClassification文本分类实战和经验分享

    本文主要使用Qwen2ForSequenceClassification实现文本分类任务. 文章首发于我的知乎:https://zhuanlan.zhihu.com/p/17468021019 一.实 ...

  10. Event Store-其它存储

    背景 ENode是一个CQRS+Event Sourcing架构的开发框架,Event Sourcing需要持久化事件,事件可以持久化在DB,但是DB由于面向的是CRUD场景,是针对数据会不断修改或删 ...