Linux基础——SSH远程连接

article/2025/11/9 3:21:49

简介

1.Ssh 是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。

2.OpenSSH 是实现SSH软件的开源软件项目

结构

C/S结构:客户机和服务器结构,是软件体系结构。

B/S结构:浏览器和服务器结构,是WEB兴起后的一种网络结构模式,

环境

检查是否有sshscp命令,如果没有,安装openssh-clients安装包

普通连接

使用ssh,加上要登陆的账号@要登陆的主机IP地址,然后输入密码进行登录。

输入exit退出远程登录

如果是第一次连接,会提示用户,输入yesno,作用是建立连接。会在连接双方的用户的家目录中的.ssh目录中,创建一个known_hosts文件,里面记录的对方的信息。

如果不写登录账号,默认使用root账号登录。

密钥对连接

验证过程

  1. SSH客户端以root用户身份创建密钥对
  2. 客户端将创建的公钥文件上传到SSH服务端临时位置
  3. 服务端将公钥信息导入用户root的公钥数据库文件
  4. 客户端以root用户身份连接服务器端root用户测试

创建

密钥

[root@server ~]# ssh-keygen

//创建密钥对,一直按回车即可

id rsa :私钥配置文件

id rsa.pub:公钥配置文件

方法一

分发

密钥

[root@server ~]# cd .ssh/

//进入.ssh配置文件,查看密钥对

[root@server .ssh]# scp ~/.ssh/id_rsa.pub 192.168.200.5:/root/

//通过scp命令,将公钥拷贝到服务器的root目录下,输入对方的root密码

公钥

操作

1

查看另一台机器的root目录是否有.ssh目录,如果没有,那么创建.ssh目录,并将该目录的权限设置为700

[root@client ~]# mv id_rsa.pub .ssh/

//将公钥移动到.ssh目录中

[root@client .ssh]# mv id_rsa.pub authorized_keys

//更改公钥名称

[root@client .ssh]# vim /etc/ssh/sshd_config

//如果记不住这个文件的名称,可以在公钥进程中查看

测试

当再次使用ssh进行远程连接时,不需要再输入密码,直接就可以登录。

Ps

如果连接的是普通用户,那么就要在普通用户的家目录中导入公钥,并且其家目录中要有.ssh文件且权限为700。然后将公钥导入该目录即可。

方法二

[root@client ~]# ssh-copy-id  -i  ~/.ssh/id_rsa.pub 192.168.200.4

-i:指定公钥位置

//将公钥发给192.168.200.4主机,没写用户,默认为超户

测试

Ps

如果要是发给客户机上其他用户,则必须指定该用户

脚本编写步骤分析

1

一步创建密钥对

[root@client .ssh]# ssh-keygen -t dsa -P "" -f ~/.ssh/id_dsa

2

跳过第一次连接用户输入yes/no

[root@client ~]# ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 192.168.200.4"

//不提示用户输入yes/no

进入/etc/ssh/ssh_config配置文件,修改StrictHostKeyChecking  ask

ask的值改为no,然后使用service sshd rstart重启服务,此时,就算是普通连接,第一次也不会出现yes/no。(需要修改服务器配置)

3.

跳过密码(免密推送公钥)

安装sshpass

[root@client yum.repos.d]# yum -y install sshpass

yumwget http://files.tttidc.com/centos6/epel-6.repo

[root@client ~]# sshpass -p "abc123," ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no 192.168.200.4"

sshpass -p :指定远程登录的密码

4.

检测主机IP是否可以Ping通,如果可以Ping通,那么存活,那么就分发密钥对,如果不存活,则不发送

脚本

举例

#!/bin/bash

function localYumBuild(){

echo "正在安装本地yum仓库"

umount /dev/sr0 &>/dev/null

 [ -d /media/cdrom ] || mkdir -p /media/cdrom

mount /dev/sr0 /media/cdrom &>/dev/null

 [ $? -eq 0 ] || echo "请插入光盘"

    [ -d /etc/yum.repos.d ] || mkdir -p /etc/yum.repos.d &>/dev/null

    cd /etc/yum.repos.d

    mv * /tmp/

    cat > /etc/yum.repos.d/localyum.repo << EEE

    [local] 

    name=localrepo

    baseurl=file:///media/cdrom/

    gpgcheck=0

    enabled=1

    EEE 

    yum -y clean all &> /dev/null

    yum makecache &> /dev/null

[ $? -eq 0 ] && echo "本地yum 仓库搭建成功" || (echo "本地yum仓库搭建失败" && exit)

  }

which wget &>/dev/null || yum -y install wget &>/dev/null

localYumBuild

yum -y install wget &>/dev/null || (echo "系统错误" &&exit)

function yunYumBuild(){

echo "正在安装云yum仓库"

cd /etc/yum.repos.d

wget -O /etc/yum.repos.d/epel.repo

http://mirrors.aliyun.com/repo/epel-6.repo &>/dev/null

yum -y clean all &>/dev/null

yum makecache &>/dev/null

[ $? -eq 0 ] && echo "云yum 仓库搭建成功" || (echo "云yum仓库搭建失败" && exit)

    }

    echo "网络连接检查中..."

ping www.baidu.com -c2 &>/dev/null || (echo"无网络连接,无法运行脚本" && exit)

 which sshpass &>/dev/null || yum -y install sshpass &>/dev/null

     if [ $? -ne 0 ];then

 yunYumBuild

  yum -y install sshpass &>/dev/null || ( echo "安装失败" && exit)

 fi

  [ -d ~/.ssh ] || mkdir -p ~/.ssh;chmod 700 ~/.ssh

 echo "正在创建密钥对。。。"

 rm -rf ~/.ssh/id_dsa ~/.ssh/id_dsa.pub

 ssh-keygen -t dsa -f ~/.ssh/id_dsa -P "" &>/dev/null

 for ip in 192.168.200.{1..254}

 do

 ping $ip -c 2 -i 0.1 &>/dev/null

      if [ $? -eq 0 ];then

         echo "$ip 存活"

      sshpass -p "666666" ssh-copy-id -i ~/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@$ip" &>/dev/null && echo "密钥分发成功"

     else

            echo "$ip 不存活"

fi

done

2021-1-7


http://chatgpt.dhexx.cn/article/vxEXyKhM.shtml

相关文章

windows 通过ssh连接到Linux主机

windows 通过ssh连接到Linux主机 文章目录 windows 通过ssh连接到Linux主机1.ssh的认识2.ssh的安全验证3.连接方法4.windows 通过ssh连接到Linux主机 1.ssh的认识 SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠&#xff0c;专为远程登录会话和其他网络服务提供安全性…

Linux配置SSH连接方式

1. SSH介绍 1&#xff09; 什么是SSH SSH是一种安全协议&#xff0c;主要用于给远程登录会话数据进行加密&#xff0c;保证数据传输的安全 2&#xff09;SSH服务端和客户端 SSH服务端是一个守护进程&#xff0c;一遍为sshd进程&#xff0c;在后端运行并响应来自客户端的请求。…

Linux----SSH远程连接服务

一、SSH介绍 1、SSH介绍 SSH是一个应用层协议 实现Linux的远程加密连接 适用于Linux服务器远程管理 Telnet 远程连接、不加密 适用于局域网网络设备的远程连接 2、管理Linux服务器的方式 本地管理 安装系统、故障修复 远程管理&#xff08;使用频率较高&#xff09; 3…

如何通过ssh远程连接自己的主机(Linux)?

1.查看自己的网卡是否工作正常 可以看到&#xff0c;有多块网卡在工作&#xff0c;其中eno1是有线网卡&#xff0c;UP表示开启了&#xff0c;但没有运行&#xff08;RUNNING&#xff09;&#xff0c;因为此时主机并没有连接有线网络。 lo是本地虚拟网卡&#xff0c;所有设备都…

通过SSH连接到Linux服务器

目录 前提&#xff1a; 一、通过账号密码方式进行ssh连接 二、通过免密方式进行ssh连接&#xff08;公、私钥校验&#xff09; 三、通过第三方工具&#xff08;XShell&#xff09;免密方式进行ssh连接 前提&#xff1a; 传统的网络服务程序&#xff0c;如ftp&#xff0c;p…

Linux服务器的SSH连接使用

本文已同步至个人博客: liaosis blog----Linux服务器的SSH连接使用 一.什么是SSH? 简单说,SSH(Secure Shell)是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,…

【SpringBoot】| 邮箱发送验证码,你会了吗?

目录 &#x1f981; 题外话&#x1f981; 提前准备2.1 配置邮箱第三方登录2.1.1 点击设置——账户2.1.2 开启POP3/SMTP服务 2.2 添加依赖2.3 yaml配置 &#x1f981; 进入主题&#x1f981; 测试使用&#x1f981; 尾声3.1 安利一个生成验证码的工具类3.1.1 添加依赖3.1.2 编写…

发送验证码倒计时效果实现

目录 前言一、应用场景二、代码演示三、 效果演示总结 前言 今天用vueuse/core中提供的一个方法&#xff0c;实现发送验证码时倒计时的一个效果。这样的场景使我们经常会见到的&#xff0c;一起来看一下如何实现 一、应用场景 用户选择手机号和验证码登录的时候&#xff0c;往…

阿里云短信服务——短信发送验证码

引言 短信服务现在在很多地方都用的到&#xff0c;我们最多接触到的可能就是验证码的发送了&#xff1b;现在很多大厂都提供由短信服务对应的api&#xff0c;直接调用就可以轻松实现短信发送&#xff1b;下面我以阿里云为例&#xff0c;演示一下如何短信发送验证码&#xff1b…

实战总结:邮箱发送验证码

java邮箱发送验证码 目前项目中需要同时支持短信和邮箱验证&#xff0c;短信用的是腾讯云就不多说了&#xff0c;在此分享一下邮箱验证码发送。 首先&#xff0c;作为发送邮箱&#xff0c;需要开启POP3/SMTP/IMAP&#xff0c;登录邮箱–设置–账户–开启POP3/SMTP/IMAP&#x…

SpringBoot整合邮箱发送验证码

1、以QQ邮箱为例&#xff0c;点开设置开启POP3/SMTP服务 2、创建一个springboot项目 1&#xff09;引入maven依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> </dependen…

Vue3发送验证码-防止页面刷新-发送验证码状态改变

效果: 1.页面DOM <div v-show"state.sendAuthCode" click"getCode">发送验证码</div> <div v-show"!state.sendAuthCode" ><span class"auth_text_blue">{{state.second}} </span>s</div>2. 业务…

C#实现手机发送验证码

目录 具体实现——封装一个类里&#xff0c;U层直接调用 配置文件的内容如下 验证手机号的正则表达式 首先先需要注册第三方网站&#xff0c;给大家推荐一个网站互亿无线&#xff0c;注册了之后每个用户可以免费发送50条短信。 下面以C#实现手机发送验证码为例。基本思路是本地…

uniapp 发送验证码倒计时

实现原理&#xff0c;点击发送验证码按钮&#xff0c;开始倒计时效果 准备工作 &#xff1a;在data中定义变量 ​​​​​​​ 点击事件 let timerId setInterval(() > {this.countDown--;this.sendText this.countDown "秒后重试";if (this.countDown < 0)…

html给手机号发送验证码,js如何实现手机发送验证码功能

js如何实现手机发送验证码功能 发布时间:2021-06-21 12:24:46 来源:亿速云 阅读:82 作者:小新 这篇文章将为大家详细讲解有关js如何实现手机发送验证码功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 效果图: 代码如下:html&g…

Python发送验证码短信

Python发送验证码短信 前提条件相关介绍实验环境发送验证码短信账户注册查看用户名查看密码主要步骤代码实现输出结果 前提条件 熟悉Python基本语法 相关介绍 Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被…

html如何发送验证码到手机,页面效果,给手机发送验证码

html>定时发送验证码 var wait 5; function send(o) { if(wait5){ //向服务器发送请求&#xff0c;给手机发送验证码 // $.post("/simple/user/sendCode/mobile", // { // "mobile" : "${user.mobile}", // "number" : 2 // }, …

实现发送验证码功能

// 需求一&#xff1a;发送验证码// 用户点击之后&#xff0c;显示05秒后重新获取// 时间到了&#xff0c;自动改为重新获取let code document.querySelector(.code)code.addEventListener(click, function () {this.innerHTML 05秒后重新获取let mark 5let time setInterva…

发送验证码倒计时

点击发送验证码按钮的时候 会调用ajax请求发送验证码 但是 如果没有设置倒计时 如果一直重复点击按钮的话 会一直请求发送验证码 所以我们要设置一个验证码倒计时 <input id"sendCodeId" type"button" class"btn btn-danger" click"sen…

微信小程序发送验证码

记录一下&#xff0c;小程序发送验证码的小案例。废话不多说&#xff0c;直接撸代码。。。 1、效果图如下 wxml: <view classheader> <input typenumber placeholder请输入手机号 bindinputmInput></input> </view> <view classnav> <v…