SSH登录到远程主机@openSSH

2024-04-11 18:36
文章标签 登录 主机 远程 ssh openssh

本文主要是介绍SSH登录到远程主机@openSSH,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • abstract
      • SSH
      • OpenSSH
    • 安装
      • linux
      • windows
      • 小结
    • 相关软件
      • windows上的ssh客户端
      • linux上的ssh软件
    • 建立ssh连接😊
      • 作为SSH客户端连接远程服务器的步骤
        • 使用图形化方式
        • 使用Windows内置SSH客户端(命令行方式)
      • 注意事项FAQ😊
    • 免密登录😊
      • 密钥对创建与交换
    • 相关问题和资源

abstract

SSH

SSH(Secure Shell)是一种网络协议,设计用于提供安全的远程登录和命令执行环境,以及数据传输服务。SSH协议能够对网络中的用户身份进行验证,并且通过加密技术确保数据传输过程中的安全性,避免在网络中传输敏感信息时遭受窃听、篡改或冒充等攻击。

OpenSSH

  • OpenSSH软件官网
  • OpenSSH则是SSH协议的一个免费开源实现,它包含了一系列工具,如sshd(SSH服务器端守护进程)、ssh(SSH客户端程序)以及其他相关工具如sftp(安全文件传输)、scp(安全拷贝)等。OpenSSH实现了SSHv1和SSHv2协议,但出于安全考虑,现代系统默认几乎都禁用了SSHv1,主要使用SSHv2。

安装

linux

  • linux发行版比较多,但是也能够用命令行方便地安装

windows

  • 通常windows上使用ssh client就够了(默认自带)

  • 而很少用windows去做服务器的,但是Microsoft也给出了如何启动ssh服务的方法

  • windows上使用openssh

    • client and server Get started with OpenSSH for Windows | Microsoft Learn

    • 检查是否已经安装了相应软件(管理员身份打开powershell)

      PS>Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'Name  : OpenSSH.Client~~~~0.0.1.0
      State : InstalledName  : OpenSSH.Server~~~~0.0.1.0
      State : NotPresent
    • 如果是NotPresent,就说明未安装,执行一下命令安装(国内网络可能需要好几分钟才能下载下来)

      • # Install the OpenSSH Client
        Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0# Install the OpenSSH Server
        Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
        
    • 例如安装OpenSSH server完毕(以sshd调用)

      • PS>Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0Path          :
        Online        : True
        RestartNeeded : False
        
    • 初次ssh服务设置(包括防火墙等,以管理员身份打开powershell执行)

      • # Start the sshd service
        Start-Service sshd# OPTIONAL but recommended:
        Set-Service -Name sshd -StartupType 'Automatic'# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
        if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
        } else {Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
        }
        

小结

  • SSH是协议层面的概念,定义了如何安全地远程访问和管理计算机的方法。
  • OpenSSH是实现SSH协议的具体软件项目,是Linux和类Unix操作系统中最常见的SSH工具集,同时也是许多其他操作系统上的可选组件,它允许用户在不同系统间通过加密通道安全地进行远程登录、命令执行和文件传输操作。
  • windows上同样也可以使用openSSH

相关软件

windows上的ssh客户端

  • 较新版本的windows自带ssh客户端

    PS>gcm ssh|select SourceSource
    ------
    C:\WINDOWS\System32\OpenSSH\ssh.exe
    
  • 其他客户端

    • PuttyDownload PuTTY: latest release (0.80) (greenend.org.uk)
    • Vscode+extensions:Developing on Remote Machines using SSH and Visual Studio Code

linux上的ssh软件

  • 常用的ubuntu上使用openSSH-server
    • OpenSSH Server | Ubuntu

建立ssh连接😊

  • How to Use SSH to Connect to a Remote Server in Linux or Windows (phoenixnap.com)

  • 建立SSH(Secure Shell)链接的基本步骤通常包括以下几个方面

  • 这里假设你是在Windows环境下作为客户端去连接远程Linux服务器(最常见的情形)

作为SSH客户端连接远程服务器的步骤

使用图形化方式
  • 不同的软件有各自的使用文档,这里不展开
使用Windows内置SSH客户端(命令行方式)
  1. 确认OpenSSH已安装:

    • 在Windows 10之后,系统自带了OpenSSH,检查是否已经安装并启用SSH客户端。
  2. 连接到服务器:

    • 打开命令提示符或PowerShell,输入以下命令:

      ssh 用户名@远程服务器地址
      
    • 例如:ssh user@example.com

    • Note:远程服务器的地址在没有域名的情况下,使用ip地址会更加可靠;

      • 对于局域网环境,可能只需要知道被链接的机器的名字以及上面的一个可登录的用户和密码就可以了
      • 但是经过试验不一定能够链接的上去,而用ip地址通常总是没问题
  3. 输入密码或使用密钥:

    • 如果服务器配置允许密码登录,输入你的密码进行连接。

    • 若要使用密钥登录,确保私钥文件(.pem.ppk)在~/.ssh目录下,并且已设置正确的权限,可通过 -i 参数指定私钥文件:

      ssh -i ~/.ssh/id_rsa user@example.com
      

注意事项FAQ😊

  • 确保远程服务器上的SSH服务正在运行(对于Linux系统通常是sshd服务)。
  • 确保网络连接畅通,且防火墙设置允许SSH流量通过。
  • 对于首次连接到的远程服务器,可能会出现安全警告,需要手动确认其主机指纹。
  • 如果默认状态无法链接,则可能需要用其他方式编辑ssh服务器端的sshd_config配置文件来允许链接(参考其他资料)
    • 如果是虚拟机,就得用虚拟机提供的窗口进行编辑
    • 云主机有自己的方案

免密登录😊

密钥对创建与交换

如果你希望使用SSH密钥对进行无密码登录,还需要执行以下步骤:

  1. 在本地计算机上创建SSH密钥对:

    ssh-keygen -t rsa
    

    这将在~/.ssh目录下生成公钥(id_rsa.pub)和私钥(id_rsa)。

  2. 将公钥上传到远程服务器的~/.ssh/authorized_keys文件中:

    • 使用scp:scp "$home\.ssh\id_*pub" cxxu@192.168.37.129:~/.ssh/authorized_keys

      • 模板

        #把两个变量(用户名和目标主机地址改为自己的具体情况)
        $username=cxxu;$target_host=192.168.37.129
        scp "$home\.ssh\id_*pub" $user_name@target_host:~/.ssh/authorized_keys
        
      • 先用ssh配合普通密码登录到目标主机(linux主机为例),计算两个变量的取值

        • 通过执行以下两条命令获取

        • #查询当前用户和主机名
          echo "$(whoami)@$(hostname)"#查询ip地址
          ip -4 addr show | grep -oP '(?<=inet\s)\d+(\.\d+){3}' | grep -v '^127'
    • 虽然可以使用ssh-copy-id,但是windows上通常不会自带这个程序

      • ssh-copy-id -i ~/.ssh/id_rsa.pub user@example.com
        
    • 或者手动复制粘贴公钥内容到远程服务器的相应文件中。

  3. 确保远程服务器的/etc/ssh/sshd_config配置文件允许公钥认证,并重启SSH服务。

相关问题和资源

  • vscode@ssh远程编程@管理员权限保存文件问题_vscode保存远程服务器文件没权限-CSDN博客

这篇关于SSH登录到远程主机@openSSH的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/894857

相关文章

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID

Spring Security重写AuthenticationManager实现账号密码登录或者手机号码登录

《SpringSecurity重写AuthenticationManager实现账号密码登录或者手机号码登录》本文主要介绍了SpringSecurity重写AuthenticationManage... 目录一、创建自定义认证提供者CustomAuthenticationProvider二、创建认证业务Us

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例