Linux学习笔记-Ubuntu系统下配置ssh免密访问,创建多用户免密访问

这篇具有很好参考价值的文章主要介绍了Linux学习笔记-Ubuntu系统下配置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

ubuntu 免密登录,# Ubuntu,linux,学习,笔记,ubuntu,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.

ubuntu 免密登录,# Ubuntu,linux,学习,笔记,ubuntu,ssh

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

部分操作说明可参考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:~$

ssh-add 参数:

  • -D:删除ssh-agent中的所有密钥.
  • -d:从ssh-agent中删除密钥
  • -e pkcs11:删除PKCS#11共享库pkcs1提供的钥匙。
  • -s pkcs11:添加PKCS#11共享库pkcs1提供的钥匙。
  • -L:显示ssh-agent中的公钥
  • -l:显示ssh-agent中的密钥
  • -t life:对加载的密钥设置超时时间,超时ssh-agent将自动卸载密钥
  • -X:对ssh-agent进行解锁
  • -x:对ssh-agent进行加锁

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>

ubuntu 免密登录,# Ubuntu,linux,学习,笔记,ubuntu,ssh

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免密访问服务器。

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

五、创建多用户免密访问

5.1 使用useradd创建新用户

zero@ubuntu:~$ sudo useradd -g git git_user		# 创建用户,并指定初始区组为git
zero@ubuntu:~$ id git_user						# 查询用户基本信息
uid=1001(git_user) gid=1001(git) groups=1001(git)

zero@ubuntu:/etc/ssh$ sudo passwd git_user		# 修改用户密码,不修改密码,可能后续ssh无法登录
New password:
Retype new password:
passwd: password updated successfully

5.2 将ssh的密钥文件拷贝到新用户的家目录中

zero@ubuntu:~$ sudo cp .ssh/authorized_keys /home/git_user/.ssh/authorized_keys
  • 第一个目录是已经可以免密访问的账户,家目录下的密码存储文件,当前就在zero账户的家目录,故直接用相对路径。
  • 第二个参数是新建用户的家目录下的.ssh文件,文件名保持一致,若修改文件名需要修改“/etc/ssh/sshd_config”文件的密码保存文件,将新的文件名添加到后面。
    ubuntu 免密登录,# Ubuntu,linux,学习,笔记,ubuntu,ssh

5.3 将配置文件的拥有者修改为新建用户和新建用户的初始群组

zero@ubuntu:~$ cd /  # 返回更目录

# 修改git_user的家目录拥有着为git_user
zero@ubuntu:/$ sudo chown -R git_user /home/git_user/.ssh/authorized_keys
[sudo] password for zero:
zero@ubuntu:/$ getfacl /home/git_user/.ssh/authorized_keys
getfacl: Removing leading '/' from absolute path names
# file: /home/git_user/.ssh/authorized_keys
# owner: git_user
# group: root
user::rw-
group::---
other::---

# 修改/home/git_user的拥有群组为git
zero@ubuntu:/$ sudo chgrp git /home/git_user/.ssh/authorized_keys
zero@ubuntu:/$ getfacl /home/git_user/.ssh/authorized_keys
getfacl: Removing leading '/' from absolute path names
# file: /home/git_user/.ssh/authorized_keys
# owner: git_user
# group: git
user::rw-
group::---
other::---

由于原来拷贝的密钥文件已经存在密钥,至此,有密钥的电脑即可实现使用新账号git_user进行免密访问了。

5.4 踩坑历程:

在测试配置其他用户也免密访问的过程中通过多次实验,首先在网上找解决方案,不过没有找到,网上基本只是讲了一个全新配置,没有此方面的案例,迫不得已自行摸索。

  1. 最开始,我将创建万用户后,直接访问,结果发现无法免密访问。就想着新建用户可能账号是权限问题,所以就想着将新建户和群组添加到ssh密钥管理文件的权限里。
  2. 首先将用户组添加到密钥管理文件,结果不止新建用户无法访问,原来的zero账户也无法访问了;
  3. 觉得可能是权限问题,所以又将该文件用户的和其他用户的权限改为“rw-”,也是一样;
  4. 在常务无法使用之后,尝试去除添加的新用户git_user,仍然无法使用;
  5. 最后将该文件的group权限改为“—”才能正常访问,即家目录下ssh要正常访问,authorized_keys的权限只能是拥有者,而且拥有群组的权限需要为“—”;
  6. 我又开始尝试,新建一个用户,然后将新建用户家目录和初始群组设置为可以免密访问的用户同目录和群组,结果原来的用户可以正常免密访问,但是新用户依然无法实现免密访问;
  7. 尝试将密钥文件authorized_keys的权限添加上新用户的,不过新用户依然无法实现免密访问。
  8. 最终,经过多番折腾,发现只能通过新建用户的家目录中添加配置文件,然后再行添加密钥即可实现免密访问,才是应该是家目录的特殊性导致的,毕竟家目录是针对单一用户设置的,理论上每一个用户都有一个家目录。

踩踩坑,记录以下。文章来源地址https://www.toymoban.com/news/detail-754765.html

到了这里,关于Linux学习笔记-Ubuntu系统下配置ssh免密访问,创建多用户免密访问的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 作业:通过两台linux主机配置ssh实现互相免密登陆

    做题步骤 : 一.开启两个Linux主机,并且用ssh连接,要能够ping通 我这里是server:192.168.81.129 client:192.168.81.130 举例 操作如下: 二.在客户端上创建一对密钥 1. 注意:可以看到这对密钥是放在/root/.ssh/id_rsa.pub文件下的,公钥的名字是id_rsa.pub 2.查看一下密钥对 [root@client ~]# ll

    2024年01月17日
    浏览(40)
  • 【Linux网络】ssh服务与配置,实现安全的密钥对免密登录

    目录 一、SSH基础 1、什么是ssh服务器 2、对比一下ssh协议与telnet协议 3、常见的底层为ssh协议的软件: 4、拓展 二、SSH软件学习 1、ssh服务软件学习  2、sshd公钥传输的原理: 3、ssh命令学习: 4、学习解读sshd服务配置文件: 三、ssh服务的应用 1、使用密钥对免密码登录 第一步

    2024年02月04日
    浏览(56)
  • Ubuntu免密ssh登录阿里云

    要在Ubuntu上设置SSH免密登录阿里云服务器,请按照以下步骤操作: 在本地Ubuntu计算机上,打开一个终端窗口。 检查是否已经有SSH密钥对。输入以下命令: 如果该命令返回了 id_rsa 和 id_rsa.pub 两个文件,说明你已经生成过SSH密钥对,可以跳过下一步。 如果没有SSH密钥对,请生

    2024年02月11日
    浏览(38)
  • 简单几步学会Linux用户使用SSH远程免密登录,LinuxSSH服务器配置允许/禁止某些用户远程登录

    本文基于Linux上CentOS 7版本配合Xshell 7进行演示 目录 一.SSH简介 1.介绍 2.工作流程 二.具体配置免密步骤 1.配置前准备工作 2.正式配置过程 三.在服务器端配置SSH远程黑白名单 1.配置文件/etc/ssh/sshd_config部分参数解析 2.配置远程登录黑白名单 SSH用于计算机之间的加密登录,是一类

    2024年02月22日
    浏览(55)
  • ubuntu系统设置ssh远程访问

    本文档主要记录Ubuntu系统安装完成后,设置ssh远程访问的过程。 Ubuntu 20.04

    2024年02月16日
    浏览(36)
  • 威联通NAS VirtualizationStation 安装ubuntu配置SSH远程访问

    Ubuntu中国官网 大家可以选择下载22.04LTS长期支持版,也可以选择下载其他版本,比如20.04LTS或者16.04LTS。但版本越高对配置要求越高,建议配置在8GRAM及以上。 应用商店下载VirtualizationStation 后启动,并建立虚拟机 选择尝试安装ubuntu 后续(我以中文版为例,建议英文版): 选

    2024年04月13日
    浏览(43)
  • SSH免密登录配置

    免密登录命令: 1.进入.ssh目录 :  cd ~/.ssh 2.生成一对密钥:  ssh-keygen -t rsa 3.发送公钥:         ssh-copy-id 192.168.xx.xxx 4.免密登录测试: ssh 192.168.xx.xxx 目录 一、免密登录原理 二、配置ssh 1.查看 .ssh目录 2.进入.ssh目录 3.ssh连接102 4.生成密钥 5.生成后文件介绍 6.cat查看id_rsa

    2024年02月03日
    浏览(48)
  • Linux系统配置sftp服务以及实现免密登录

    网上的一系列部署总有问题,记录下部署配置成功案例。 一、部署sftp服务 (本质是sftp服务使用ssh中的协议,默认端口也跟随ssh服务的配置) 1、创建用户组: 2、创建用户testsftp,并将用户添加到刚创建的用户组,拒绝用户登录shell 3、指定sftp的家目录,自选人意位置,我这

    2024年02月16日
    浏览(38)
  • 树莓派ubuntu:vscode remote-ssh免密登录(Mac)

    Vscode remove-ssh远程开发很方便,但是每次登陆都会频繁要求输入密码,使用期间也会多次断开重连,提示再次输入密码。 可能因为我开发板的ubuntu系统用的后来创建的用户的原因,按网上的文章始终无法实现免密登录,多次尝试后如下方式解决,整理如下: 1. 本地生成key 生

    2024年01月21日
    浏览(74)
  • VSCODE[配置ssh免密远程登录]

    本文摘录于:https://blog.csdn.net/qq_44571245/article/details/123031276只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 这里要注意如下几个地方: 1.要进入.ssh目录创建文件: 2.是拷贝带\\\"ssh-rsa \\\"内容的文件:

    2024年02月13日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包