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

相关文章

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

CSS3打造的现代交互式登录界面详细实现过程

《CSS3打造的现代交互式登录界面详细实现过程》本文介绍CSS3和jQuery在登录界面设计中的应用,涵盖动画、选择器、自定义字体及盒模型技术,提升界面美观与交互性,同时优化性能和可访问性,感兴趣的朋... 目录1. css3用户登录界面设计概述1.1 用户界面设计的重要性1.2 CSS3的新特性与优势1.

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

C#实现访问远程硬盘的图文教程

《C#实现访问远程硬盘的图文教程》在现实场景中,我们经常用到远程桌面功能,而在某些场景下,我们需要使用类似的远程硬盘功能,这样能非常方便地操作对方电脑磁盘的目录、以及传送文件,这次我们将给出一个完整的... 目录引言一. 远程硬盘功能展示二. 远程硬盘代码实现1. 底层业务通信实现2. UI 实现三. De

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1