Linux学习笔记-Ubuntu系统下配置ssh免密访问

news2024/11/17 1:42:16

Ubuntu系统下配置ssh免密访问

  • 一、基本信息
  • 二、ssh安装
    • 2.1 查看是否已经安装ssh
    • 2.2 安装ssh
    • 2.3 查看ssh安装状态
  • 三、启动、停止,及开机自启动
    • 3.1 启动ssh
    • 3.2 关闭ssh
    • 3.3 使用systemctl设置ssh服务自启动
    • 3.4 使用systemctl关闭ssh开机启动
  • 四、配置通过密钥进行免密访问
    • 4.1 生成密钥
    • 4.2 通过ssh-agent管理私钥
    • 4.3 管理公钥
    • 4.4 通过scp将公钥拷贝到服务器
    • 4.5 将公钥添加到公钥管理文件中
    • 4.6 享受ssh免密链接服务器

一、基本信息

Ubuntu是linux系统,虽然他是支持界面化操作的,一般用来做服务器用,所以配置ssh可以比较安全的进行访问,也方便在其他地方访问服务器,轻松省事。
Ubuntu系统版本:
使用uname -a指令获取系统版本信息

zero@ubuntu:~$ uname -a
Linux ubuntu 5.15.0-79-generic #86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

具体信息如下:

  • 系统类型: Linux
  • 主机名:ubuntu
  • 内核版本:5.15.0-79-generic
  • 编译时间:#86-Ubuntu SMP Mon Jul 10 16:07:21 UTC 2023
  • 硬件架构:x86_64 x86_64 x86_64(处理器架构,操作系统类型,软件环境)
  • 操作系统名称:GNU/Linux

二、ssh安装

2.1 查看是否已经安装ssh

直接输入ssh查看

zero@ubuntu:~$ ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface]
           [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
           [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11]
           [-i identity_file] [-J [user@]host[:port]] [-L address]
           [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port]
           [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] destination [command [argument ...]]

有具体的信息就是已经安装了。

2.2 安装ssh

可以使用如下指令安装ssh

sudo apt-get install openssh-server

一般服务器是被访问的,所以只要安装openssh-server即可,如果要安装客户端,将安装的内容改成openssh-client即可。

2.3 查看ssh安装状态

安装完成后重新查看ssh安装状态
使用netstat查看状态

zero@ubuntu:~$ sudo netstat -tlnp | grep sshd
[sudo] password for zero:
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2714/sshd: /usr/sbi
tcp6       0      0 :::22                   :::*                    LISTEN      2714/sshd: /usr/sbi

使用systemctl查看状态

zero@ubuntu:~$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2023-08-26 15:01:13 UTC; 13min ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 2714 (sshd)
      Tasks: 1 (limit: 4514)
     Memory: 4.0M
        CPU: 33ms
     CGroup: /system.slice/ssh.service
             └─2714 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

Aug 26 15:01:13 ubuntu systemd[1]: Starting OpenBSD Secure Shell server...
Aug 26 15:01:13 ubuntu sshd[2714]: Server listening on 0.0.0.0 port 22.
Aug 26 15:01:13 ubuntu sshd[2714]: Server listening on :: port 22.
Aug 26 15:01:13 ubuntu systemd[1]: Started OpenBSD Secure Shell server.
Aug 26 15:11:26 ubuntu sshd[2899]: Accepted password for zero from 192.168.159.1 port 51604 ssh2
Aug 26 15:11:26 ubuntu sshd[2899]: pam_unix(sshd:session): session opened for user zero(uid=1000) by (uid=0)

三、启动、停止,及开机自启动

3.1 启动ssh

zero@ubuntu:~$ sudo systemctl start ssh		#启动ssh服务
zero@ubuntu:~$ sudo systemctl status sshd	#查询状态
Unit sshd.service could not be found.
zero@ubuntu:~$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset: enabled)
     Active: active (running) since Sat 2023-08-26 15:01:13 UTC; 27min ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 2714 (sshd)
      Tasks: 1 (limit: 4514)
     Memory: 4.0M
        CPU: 33ms
     CGroup: /system.slice/ssh.service
             └─2714 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

Aug 26 15:01:13 ubuntu systemd[1]: Starting OpenBSD Secure Shell server...
Aug 26 15:01:13 ubuntu sshd[2714]: Server listening on 0.0.0.0 port 22.
Aug 26 15:01:13 ubuntu sshd[2714]: Server listening on :: port 22.
Aug 26 15:01:13 ubuntu systemd[1]: Started OpenBSD Secure Shell server.
Aug 26 15:11:26 ubuntu sshd[2899]: Accepted password for zero from 192.168.159.1 port 51604 ssh2
Aug 26 15:11:26 ubuntu sshd[2899]: pam_unix(sshd:session): session opened for user zero(uid=1000) by (uid=0)
zero@ubuntu:~$ sudo netstat -tlnp | grep sshd	#查询状态
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2714/sshd: /usr/sbi
tcp6       0      0 :::22                   :::*                    LISTEN      2714/sshd: /usr/sbi

3.2 关闭ssh

zero@ubuntu:~$ sudo systemctl stop ssh				#关闭ssh服务
zero@ubuntu:~$ sudo netstat -tlnp | grep sshd		#关闭后查询不到网络状态
zero@ubuntu:~$ sudo systemctl status ssh			#ssh状态已关闭
○ ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; disabled; vendor preset: enabled)
     Active: inactive (dead) since Sat 2023-08-26 15:34:05 UTC; 11s ago
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 2714 ExecStart=/usr/sbin/sshd -D $SSHD_OPTS (code=exited, status=0/SUCCESS)
   Main PID: 2714 (code=exited, status=0/SUCCESS)
        CPU: 35ms

Aug 26 15:01:13 ubuntu systemd[1]: Starting OpenBSD Secure Shell server...
Aug 26 15:01:13 ubuntu sshd[2714]: Server listening on 0.0.0.0 port 22.
Aug 26 15:01:13 ubuntu sshd[2714]: Server listening on :: port 22.
Aug 26 15:01:13 ubuntu systemd[1]: Started OpenBSD Secure Shell server.
Aug 26 15:11:26 ubuntu sshd[2899]: Accepted password for zero from 192.168.159.1 port 51604 ssh2
Aug 26 15:11:26 ubuntu sshd[2899]: pam_unix(sshd:session): session opened for user zero(uid=1000) by (uid=0)
Aug 26 15:34:05 ubuntu systemd[1]: Stopping OpenBSD Secure Shell server...
Aug 26 15:34:05 ubuntu systemd[1]: ssh.service: Deactivated successfully.
Aug 26 15:34:05 ubuntu systemd[1]: Stopped OpenBSD Secure Shell server.

3.3 使用systemctl设置ssh服务自启动

zero@ubuntu:~$ sudo systemctl enable ssh
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh

在这里插入图片描述

设置完成之后重启即可

3.4 使用systemctl关闭ssh开机启动

zero@ubuntu:~$ sudo systemctl disable ssh
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable ssh
Removed /etc/systemd/system/multi-user.target.wants/ssh.service.
Removed /etc/systemd/system/sshd.service.

在这里插入图片描述

四、配置通过密钥进行免密访问

部分操作说明可参考Windows下配置SSH实现免密访问和远程端口转发,本文直接进行操作。

4.1 生成密钥

zero@ubuntu:~$ sudo ssh-keygen			#此处直接使用默认设置生成rsa的密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):	//不修改路径
Enter passphrase (empty for no passphrase):			#不设置密码,实际使用根据自己需要设置密码会比较安全
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:elLfv9r5e4RLOSKnee6oJPBGmS6YGm3WcAuvXVAxBtg root@ubuntu
The key's randomart image is:
+---[RSA 3072]----+
|   o..+          |
|  . E. o         |
|      .          |
|     . o         |
|  o + + S      o |
| . O B o ...o = .|
|. * = O o .=.o + |
| = o + =  o..o...|
|. . .   ...++.=++|
+----[SHA256]-----+

注: 若要配置git访问服务器,此处密钥对可使用rsa格式的,git for windows默认识别rsa密钥。

4.2 通过ssh-agent管理私钥

zero@ubuntu:~$ ssh-agent			#启动服务
SSH_AUTH_SOCK=/tmp/ssh-XXXXXXjkoDta/agent.3455; export SSH_AUTH_SOCK;
SSH_AGENT_PID=3456; export SSH_AGENT_PID;
echo Agent pid 3456;

zero@ubuntu:~$ ssh-add /root/.ssh/id_rsa	# 没有使用agent启动bash直接调用ssh-add添加私钥会报错
Could not open a connection to your authentication agent.	

zero@ubuntu:~$ sudo ssh-agent bash --login -i		# 使用ssh-agent启动bash,注意需要添加sudo,添加root的密钥需要使用root权限。

root@ubuntu:/home/zero# ssh-add /root/.ssh/id_rsa		#将密钥添加到agent中
Identity added: /root/.ssh/id_rsa (root@ubuntu)
root@ubuntu:/home/zero# exit		# 退出当前bash
logout
zero@ubuntu:~$

4.3 管理公钥

服务器管理公钥,可以直接添加公钥文件中

zero@ubuntu:~$ cat /root/.ssh/id_ras.pub >> authorized_keys			# 直接拷贝汇报错,当我们要操作的公钥在root文件夹下时就需要root权限
cat: /root/.ssh/id_ras.pub: Permission denied

zero@ubuntu:~$ sudo cat /root/.ssh/id_rsa.pub >> authorized_keys			# 添加sudo使用root权限操作
zero@ubuntu:~$			# 操作成功没有错误提示

4.4 通过scp将公钥拷贝到服务器

需要将公钥拷贝到要访问的服务器中。

PS C:\WINDOWS\system32> scp C:\Users\LJM\.ssh\id_rsa.pub zero@192.168.159.129:.ssh/id_rsa_git.pub
zero@192.168.159.129's password:
id_rsa.pub                                                                            100%  567   558.8KB/s   00:00
PS C:\WINDOWS\system32>

在这里插入图片描述

4.5 将公钥添加到公钥管理文件中

切换到.ssh文件夹中,然后将公钥添加到公钥管理文件中。

zero@ubuntu:~/.ssh$ ll
total 24
drwx------ 2 zero zero 4096 Aug 26 17:25 ./
drwxr-x--- 4 zero zero 4096 Aug 26 16:13 ../
-rw------- 1 zero zero  567 Aug 26 17:28 authorized_keys
-rw-rw-r-- 1 zero zero 2602 Aug 26 16:57 id_rsa_git
-rw-rw-r-- 1 zero zero  567 Aug 26 17:25 id_rsa_git.pub
-rw-r--r-- 1 root root  565 Aug 26 16:43 id_rsa.pub
zero@ubuntu:~/.ssh$ cat id_rsa_git.pub >> authorized_keys

4.6 享受ssh免密链接服务器

公钥和私钥添加管理后,对应的文件即可删除了。然后客户端就可以通过ssh免密访问服务器。

通常一般要访问的客户端保存私钥,服务端保存公钥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/933588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Authorization Server入门 (十六) Spring Cloud Gateway对接认证服务

前言 之前虽然单独讲过Security Client和Resource Server的对接,但是都是基于Spring webmvc的,Gateway这种非阻塞式的网关是基于webflux的,对于集成Security相关内容略有不同,且涉及到代理其它微服务,所以会稍微比较麻…

基于Spring Gateway路由判断器实现各种灰度发布场景

文章目录 1、灰度发布实现1.1 按随机用户的流量百分比实现灰度1.2 按人群划分实现的灰度1.2.1 通过Header信息实现灰度1.2.2 通过Query信息实现灰度1.2.3 通过RemoteAdd判断来源IP实现灰度 2、路由判断器2.1. After2.2. Before2.3. Between2.4. Cookie2.5. Header2.6. Host2.7.…

C++ Primer 第2章 变量和基本类型

C Primer 第2章 变量和基本类型 2.1 基本内置类型2.1.1 算术类型一、带符号类型和无符号类型练习 2.1.2 类型转换一、含有无符号类型的表达式 2.1.3 字面值常量一、整型和浮点型字面值二、字符和字符串字面值三、转义序列四、指定字面值的类型五、布尔字面值和指针字面值 2.2 变…

软考A计划-系统集成项目管理工程师-小抄手册(共25章节)-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

MySQL—MySQL主从如何保证强一致性

一、前言 涉及到的东西:两阶段提交,binlog三种格式 1、两阶段提交 在持久化 redo log 和 binlog 这两份日志的时候,如果出现半成功的状态,就会造成主从环境的数据不一致性。这是因为 redo log 影响主库的数据,binlog…

【大数据】Doris:基于 MPP 架构的高性能实时分析型数据库

Doris:基于 MPP 架构的高性能实时分析型数据库 1.Doris 介绍 Apache Doris 是一个基于 MPP(Massively Parallel Processing,大规模并行处理)架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知&#xff…

Kali Linux中的ARP欺骗攻击如何进行

在Kali Linux中进行ARP欺骗攻击是一种常见的网络攻击方法,它允许攻击者篡改局域网中的ARP表,以便将网络流量重定向到攻击者控制的位置。 步骤: 安装必要工具: 首先,确保 已经安装了Kali Linux,并在终端中安…

解除用户账户控制提醒

解决用户账户控制提醒 1. 前言2. 解决用户账户控制提醒2.1 控制面板2.2 注册表2.3 UAC服务 结束语 1. 前言 当我们使用电脑时,有时进行安装应用或者打开应用时,总会弹出一个提示框,要选择点击是否允许程序运行; 系统经常弹出用户…

流处理详解

【今日】 目录 一 Stream接口简介 Optional类 Collectors类 二 数据过滤 1. filter()方法 2.distinct()方法 3.limit()方法 4.skip()方法 三 数据映射 四 数据查找 1. allMatch()方法 2. anyMatch()方法 3. noneMatch()方法 4. findFirst()方法 五 数据收集…

azure data studio SQL扩展插件开发笔记

node.js环境下拉取脚手架 npm install -g yo generator-azuredatastudio yo azuredatastudio 改代码 运行 调试扩展,在visual studio code中安装插件即可 然后visual studio code打开进行修改运行即可 image.png 运行后自动打开auzre data studio了, 下面…

深度学习9:简单理解生成对抗网络原理

目录 生成算法 生成对抗网络(GAN) “生成”部分 “对抗性”部分 GAN如何运作? 培训GAN的技巧? GAN代码示例 如何改善GAN? 结论 生成算法 您可以将生成算法分组到三个桶中的一个: 鉴于标签&#…

6. 使用python将多个Excel文件合并到同一个excel-附代码解析

【目录】 文章目录 6. 使用python将多个Excel文件合并到同一个excel-附代码解析1. 目标任务2. 结果展示3. 代码示例4. 代码解析4.1 导入库4.2 调用库的类、函数、变量语法4.3 os.listdir-返回目录中的文件名列表4.4 startswith-用于判断一个字符串是否以指定的前缀开头4.5 ends…

如何评估开源项目的活跃度和可持续性?

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

深度学习1.卷积神经网络-CNN

目录 卷积神经网络 – CNN CNN 解决了什么问题? 需要处理的数据量太大 保留图像特征 人类的视觉原理 卷积神经网络-CNN 的基本原理 卷积——提取特征 池化层(下采样)——数据降维,避免过拟合 全连接层——输出结果 CNN …

postgresql-字符函数

postgresql-字符函数 字符串连接字符与编码字符串长度大小写转换子串查找与替换截断与填充字符串格式化MD5 值字符串拆分字符串反转 字符串连接 concat(str, …)函数用于连接字符串,并且忽略其中的 NULL 参数;concat_ws(sep, str, …) 函数使用指定分隔…

小研究 - Java虚拟机内存管理(三)

Java 语言的面向对象,平台无关,安全,开发效率高等特点,使其在许多领域中得到了越来越广泛的应用。但是由于Java程序由于自身的局限性,使其无法应用于实时领域。由于垃圾收集器运行时将中断Java程序的运行,其…

【手写promise——基本功能、链式调用、promise.all、promise.race】

文章目录 前言一、前置知识二、实现基本功能二、实现链式调用三、实现Promise.all四、实现Promise.race总结 前言 关于动机,无论是在工作还是面试中,都会遇到Promise的相关使用和原理,手写Promise也有助于学习设计模式以及代码设计。 本文主…

9个python自动化脚本,PPT批量生成缩略图、添加图片、重命名

引言 最近一番在整理资料,之前买的PPT资源很大很多,但归类并不好,于是一番准备把这些PPT资源重新整理一下。统计了下,这些PPT资源大概有2000多个,一共30多G,一个一个手动整理这个投入产出比也太低了。 作为…

CotEditor for mac 4.0.1 中文版(开源文本编辑器)

coteditorformac是一款简单实用的基于Cocoa的macOS纯文本编辑器,coteditormac版本可以用来编辑网页、结构化文本、程序源代码等文本文件,使用起来非常方便。 CotEditor for Mac具有正则表达式搜索和替换、语法高亮、编码等实用功能,而CotEdi…

QtWidgets和QtQuick融合(QML与C++融合)

先放一个界面效果吧! 说明:该演示程序为一个App管理程序,可以将多个App进行吸入管理。 (动画中的RedRect为一个带有QSplashScreen的独立应用程序) 左侧边栏用的是QQuickView进行.qml文件的加载(即QtQuick…