首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

SSH指定用户登录与限制

编程知识
2024年07月18日 09:11

环境准备

:::info
实验目标:ServerA通过用户ServerB(已发送密钥和指定端口)
:::

主机 IP 身份
ServerA 192.168.10.201 SSH客户端
ServerB 192.168.10.202 SSH目标主机

在使用SSH登录远程主机时,指定的用户名是指远程主机上的用户。命令格式如下:

ssh username@remote_host

这里的 username 是指您打算用来登录远程目标主机的用户名,这个用户必须存在于远程目标主机的系统中,并且具有相应的访问权限。remote_host 则代表您想要连接的远程服务器的IP地址或域名。
举例来说,如果您要使用名为 myuser 的用户账户登录IP地址为 192.168.0.100 的远程服务器,命令应写作:

ssh myuser@192.168.0.100

在这个命令中:
myuser 是您指定的用户名,对应的是远程服务器上已经存在的用户账户。
192.168.0.100 是远程主机的IP地址
执行此命令后,SSH客户端会尝试使用您本机当前用户的公钥(如果有已配置的密钥对认证)或提示您输入 myuser 账户在远程主机上的密码来进行身份验证。一旦身份验证成功,您将获得 myuser 用户在远程服务器上的 shell 终端会话。
总结来说,通过SSH登录远程主机时指定的用户名是指远程主机上的用户,而不是本机用户。本机用户的信息仅用于确定本地的SSH客户端配置(如私钥位置)以及可能的代理转发设置等,但实际登录远程服务器时的身份是由您提供的远程用户名决定的。

禁止root登录

root登录测试

[root@ServerA ~]# ssh -p 5000 root@ServerB
Activate the web console with: systemctl enable --now cockpit.socket

This system is not registered to Red Hat Insights. See https://cloud.redhat.com/
To register this system, run: insights-client --register

Last failed login: Thu Apr 18 03:59:14 EDT 2024 from 192.168.10.201 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Thu Apr 18 03:56:51 2024 from 192.168.10.201
[root@ServerB ~]# 注销

取消注释改为no

(如果不注销配置则无法生效)
image.png

root用户测试

[root@ServerA ~]# ssh -p 5000 root@ServerB
root@serverb's password: 
Permission denied, please try again.
root@serverb's password: 
Permission denied, please try again.
root@serverb's password: 
root@serverb: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

image.png

允许禁止某用户登录

远程主机创建用户

[root@Serverb ~]# useradd zhangsan 
[root@Serverb ~]# passwd zhangsan 
更改用户 zhangsan 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@Serverb ~]# useradd lisi
[root@Serverb ~]# passwd lisi 
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

两个用户都可以远程登录

[root@servera ~]# ssh zhangsan@ServerB -p 5000
zhangsan@serverb's password: 
Last login: Fri Jul 12 14:33:34 2024 from servera
[zhangsan@serverb ~]$ exit
logout
Connection to serverb closed.
[root@servera ~]# ssh lisi@ServerB -p 5000
lisi@serverb's password: 
Last login: Fri Jul 12 11:24:26 2024 from servera
[lisi@serverb ~]$ exit
logout
Connection to serverb closed.
[root@servera ~]# 

底部添加参数允许zhangsan拒绝lisi

image.png

[root@Serverb ~]# vim /etc/ssh/sshd_config 
[root@Serverb ~]# systemctl restart sshd.service 
[root@Serverb ~]# tail -n 3 /etc/ssh/sshd_config 
#	ForceCommand cvs server
AllowUsers zhangsan
DenyUsers lisi
[root@Serverb ~]# 

测试登录

张三允许登录

[root@servera ~]# ssh zhangsan@ServerB -p 5000
zhangsan@serverb's password: 
Last login: Fri Jul 12 14:42:10 2024 from servera
[zhangsan@serverb ~]$ exit
logout
Connection to serverb closed.

李四禁止登录

[root@servera ~]# ssh lisi@ServerB -p 5000
lisi@serverb's password: 
Permission denied, please try again.
lisi@serverb's password: 
Permission denied, please try again.
lisi@serverb's password: 

Pam模块禁止用户

ServerB

只允许李四登录

[root@serverb ~]# echo "lisi" | sudo tee /etc/ssh/allowed_users
lisi
[root@serverb ~]# cat /etc/ssh/allowed_users
lisirverB ~]# chmod 644 /etc/ssh/allowed_users
[root@Serverb ~]# systemctl restart sshd.service 
[root@Serverb ~]# tail -n 1 /etc/ssh/sshd_config 
#	ForceCommand cvs server
[root@Serverb ~]# tail -n 1 /etc/pam.d/sshd 
auth required pam_listfile.so item=user sense=allow onerr=fail file=/etc/ssh/allowed_users

张三禁止登录

[root@servera ~]# ssh zhangsan@ServerB -p 5000
zhangsan@serverb's password: 
Permission denied, please try again.
zhangsan@serverb's password: 
Permission denied, please try again.
zhangsan@serverb's password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

李四可登录

[root@servera ~]# ssh lisi@ServerB -p 5000
lisi@serverb's password: 
Last login: Fri Jul 12 14:50:03 2024 from servera

Match User模块

ServerB

使用模块禁止李四

[root@ServerB ~]# vim /etc/ssh/sshd_config 
[root@ServerB ~]# tail -n 6 /etc/ssh/sshd_config 
#	AllowTcpForwarding no
#	PermitTTY no
#	ForceCommand cvs server
Match User lisi
    PermitTTY no
    ForceCommand /bin/false
[root@ServerB ~]# systemctl restart sshd.service 

这里,PermitTTY no禁止分配伪终端,ForceCommand /bin/false设置了一个无效的命令,确保用户无法成功登录。

ServerA

张三用户可登录

[root@servera ~]# ssh zhangsan@ServerB -p 5000
zhangsan@serverb's password: 
Last login: Fri Jul 12 15:01:09 2024 from servera
[zhangsan@serverb ~]$ exit
logout
Connection to serverb closed.

李四用户不可登录

[root@servera ~]# ssh lisi@ServerB -p 5000
lisi@serverb's password: 
PTY allocation request failed on channel 0
Connection to serverb closed.

指定其他用户免密登录

ServerA

Server通过指定端口将密钥发送到对应用户文件夹下

[root@servera ~]# ssh-copy-id -i .ssh/id_rsa.pub  -p 5000 zhangsan@ServerB
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
zhangsan@serverb's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh -p '5000' 'zhangsan@ServerB'"
and check to make sure that only the key(s) you wanted were added.

ServerB

[root@ServerB ~]# systemctl restart sshd.service 
[root@ServerB ~]# ll /home/zhangsan/.ssh/
总用量 4
-rw-------. 1 zhangsan zhangsan 580 4月  18 04:35 authorized_keys
[root@ServerB ~]# 

ServerA登录

[root@servera ~]# ssh zhangsan@ServerB -p 5000
Last login: Fri Jul 12 15:05:21 2024 from servera
[zhangsan@serverb ~]$ exit
logout
Connection to serverb closed.

禁止密码登录

PasswordAuthentication no

密码登录测试与免密测试

[root@servera ~]# ssh lisi@ServerB -p 5000
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
[root@servera ~]# ssh zhangsan@ServerB -p 5000
Last login: Fri Jul 12 15:06:25 2024 from servera
[zhangsan@serverb ~]$ exit
logout
Connection to serverb closed.

指定用户和IP登录

AllowUsers zhangsan@192.168.10.201

拒绝登录

[root@localhost ~]# ifconfig ens160
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.128  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::3429:206b:def4:69f2  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:be:62:ce  txqueuelen 1000  (Ethernet)
        RX packets 1453  bytes 1745198 (1.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 859  bytes 68106 (66.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@localhost ~]# ssh zhangsan@192.168.10.202 -p 5000
zhangsan@192.168.10.202's password: 
Permission denied, please try again.
zhangsan@192.168.10.202's password: 
Permission denied, please try again.
zhangsan@192.168.10.202's password: 

允许地址登录

[root@servera ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.10.201  netmask 255.255.255.0  broadcast 192.168.10.255
        inet6 fe80::c086:7d71:44a8:c234  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:9f:70:a6  txqueuelen 1000  (Ethernet)
        RX packets 811  bytes 153103 (149.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 993  bytes 212878 (207.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@servera ~]# ssh zhangsan@ServerB -p 5000
Last failed login: Fri Jul 12 15:58:09 CST 2024 from 192.168.10.128 on ssh:notty
There were 3 failed login attempts since the last successful login.
Last login: Fri Jul 12 15:24:32 2024 from servera
[zhangsan@serverb ~]$ 
From:https://www.cnblogs.com/yuanqing09/p/18308856
本文地址: http://www.shuzixingkong.net/article/141
0评论
提交 加载更多评论
其他文章 【VMware VCF】VMware Cloud Foundation Part 01:概述。
VMware Cloud Foundation(简称 VCF)是 VMware 打造的一套用于 Software Defined Data Center(SDDC)软件定义数据中心的全栈云平台解决方案,将当前数据中心中的三大基础设施组件的虚拟化解决方案:计算(vSphere)、存储(vSAN)以及网
【VMware VCF】VMware Cloud Foundation Part 01:概述。 【VMware VCF】VMware Cloud Foundation Part 01:概述。 【VMware VCF】VMware Cloud Foundation Part 01:概述。
向量数据库技术全景
本文深入探讨了向量数据库的基础概念、架构设计及实现技术,详细介绍了HNSW、FAISS和Milvus等关键算法和工具,旨在为高效管理和检索高维向量数据提供全面的技术指南。 关注TechLead,复旦博士,分享云服务领域全维度开发技术。拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,复旦机
向量数据库技术全景 向量数据库技术全景 向量数据库技术全景
PHP 程序员为什么依然是外包公司的香饽饽?
PHP 唯一的爽点就是开发起来「哇真快」这刚好和外包公司的需求相契合,在 Web 领域的芒荒年代 PHP 以王者姿态傲视群雄。
PHP 程序员为什么依然是外包公司的香饽饽? PHP 程序员为什么依然是外包公司的香饽饽? PHP 程序员为什么依然是外包公司的香饽饽?
机器学习:详解迁移学习(Transfer learning)
详解迁移学习 深度学习中,最强大的理念之一就是,有的时候神经网络可以从一个任务中习得知识,并将这些知识应用到另一个独立的任务中。所以例如,也许已经训练好一个神经网络,能够识别像猫这样的对象,然后使用那些知识,或者部分习得的知识去帮助您更好地阅读x射线扫描图,这就是所谓的迁移学习。 来看看,假设已经训
机器学习:详解迁移学习(Transfer learning) 机器学习:详解迁移学习(Transfer learning) 机器学习:详解迁移学习(Transfer learning)
Swift开发基础08-高阶函数
高阶函数是指接受其它函数作为参数,或者返回其它函数的函数。Swift 提供了许多内置的高阶函数,这些函数在处理集合类型数据(如数组、集合等)时尤其有用。常见的高阶函数包括 map、filter、reduce、flatMap 和 compactMap。 一、常用高阶函数 1. map map 函数会对
论如何直接用EF Core实现创建更新时间、用户审计,自动化乐观并发、软删除和树形查询(上)
前言 数据库并发,数据审计和软删除一直是数据持久化方面的经典问题。早些时候,这些工作需要手写复杂的SQL或者通过存储过程和触发器实现。手写复杂SQL对软件可维护性构成了相当大的挑战,随着SQL字数的变多,用到的嵌套和复杂语法增加,可读性和可维护性的难度是几何级暴涨。因此如何在实现功能的同时控制这些S
论如何直接用EF Core实现创建更新时间、用户审计,自动化乐观并发、软删除和树形查询(上) 论如何直接用EF Core实现创建更新时间、用户审计,自动化乐观并发、软删除和树形查询(上)
CSS:弹性布局(display:flex)
道友请了~ 最近小道在修练主修功法《嘉蛙》之余,偶然从一名散修手中得到了一本《CSS秘籍》,刚好近期有自己做微信小程序的打算,这不是瞌睡了给递枕头么。欣喜若狂,翻开第一章,拜读之后受益匪浅。韩老魔说过:好记性不如烂笔头。(韩老魔:我没说过!)遂誊抄一份,分享给各位道友。 @目录容器的属性justif
CSS:弹性布局(display:flex) CSS:弹性布局(display:flex) CSS:弹性布局(display:flex)
[MRCTF2020]Ezpop(反序列化)
打开题目即可得源码 Welcome to index.php &lt;?php //flag is in flag.php //WTF IS THIS? //Learn From https://ctf.ieki.xyz/library/php.html#%E5%8F%8D%E5%BA%8F%E5%
[MRCTF2020]Ezpop(反序列化)