Linux服务—openssh—学习笔记

这篇具有很好参考价值的文章主要介绍了Linux服务—openssh—学习笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Linux服务—openssh—学习笔记

1. 什么是 SSH

SSH 为 Secure Shell 的缩写,是建立在应用层基础上的安全协议。SSH是较为可靠的专为远程登录会话和其他网络服务提供安全性的协议。利用用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。

OpenSSH 服务是 SSH 协议的免费开源实现,可以用来进行远程控制, 或在计算机之间传送文件。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控制和文件传输过程中的数据,并由此来代替原来的类似服务。

通过使用SSH,你可以把所有传输的数据进行加密,这样可以较好地抑制"中间人"这种攻击,也可能够防御DNS欺骗和IP欺骗。

使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。

接下来介绍使用其传输文件的命令。

scp命令:将本机文件复制到远程服务器上(上传)
重启openssh命令,Linux服务,linux,学习,服务器
重启openssh命令,Linux服务,linux,学习,服务器重启openssh命令,Linux服务,linux,学习,服务器
命令格式:scp 本地路径 用户名@IP:目录
重启openssh命令,Linux服务,linux,学习,服务器
重启openssh命令,Linux服务,linux,学习,服务器
将远程服务器上的文件复制到本机(下载)
命令格式:scp 用户名@IP:文件路径 本地目录
重启openssh命令,Linux服务,linux,学习,服务器
注意:

  • 如果远程服务器openssh有特殊限制,scp便要走特殊端口,具体用什么端口视情况而定,命令格式如下:
scp -P 2222 用户名@IP:路径 目录
  • 使用scp要注意所使用的用户是否具有可读取远程服务器相应文件的权限
  • 如果是拷贝文件夹添加-r参数

2. 安装 openssh

openssh默认已经安装于centos中,无须额外的安装。相关的软件包可以通过以下命令进行查询。

dnf list |grep openssh

openssh-clients.x86_64      # 客户端
openssh-server.x86_64       # 服务端
openssh-askpass.x86_64      # 交互式访问

重启openssh命令,Linux服务,linux,学习,服务器

3. 服务的状态/停止/启动

可使用systemctl命令查看和设置openssh服务的状态。

systemctl status sshd.service    			# 查看ssh状态
systemctl start sshd.service     			# 启动ssh服务
systemctl stop sshd.service      			# 停止ssh服务
systemctl reload sshd.service    			# 刷新ssh配置文件
systemctl restart sshd.service   			# 重启ssh服务
systemctl disable sshd.service   			# 关闭开机自动启动ssh服务
systemctl enable sshd.service    			# 打开开机自动启动ssh服务

注意:如果服务关闭,则无法远程登录服务器。
重启openssh命令,Linux服务,linux,学习,服务器

4. 配置免密码(公私钥认证)登录

ssh服务主要有两种登录方式:第一种为密码口令登录,第二种为公钥登录。
linux下可以用用ssh-keygen命令生成公钥/私钥对。
若有机器A,B。现想A(客户机)通过ssh免密码登录到B(服务器)。 在A机(客户机)下使用ssh-keygen命令生成公钥/私钥对。在执行此命令后将在/root/.ssh目录下将生成id_rsaid_rsa.pub文件。
重启openssh命令,Linux服务,linux,学习,服务器
进入/root/.ssh文件夹内可以看到如下密钥文件

id_rsa        # 私钥
id_rsa.pub    # 公钥

重启openssh命令,Linux服务,linux,学习,服务器
在B机器(服务器)开启证书的验证,默认是开启的。 若没有开启可修改ssh配置文件,vi /etc/ssh/sshd_config,将文本中有关PubkeyAuthenticationAuthorizedKeysFile的条目修改为如下内容:

PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

重启openssh命令,Linux服务,linux,学习,服务器
随后重启服务 systemctl restart sshd.service
A机器(客户机)使用ssh-copy-id [user]@[host]命令拷贝密钥文件到B机器(服务器)。
重启openssh命令,Linux服务,linux,学习,服务器
随后客户机访问服务器,我们会发现直接无密码登录。
重启openssh命令,Linux服务,linux,学习,服务器
而如果我们此时使用另外一台主机登录,我们会发现可以通过密码的方式登录。我们可以修改配置文件中的PasswordAuthentication 值为no,可以禁止使用密码的方式。
重启openssh命令,Linux服务,linux,学习,服务器

5. openssh 配置文件

登录服务器将配置的公钥删除,以免影响后面实验。

cd .ssh 
rm -rf authorized_keys

重启openssh命令,Linux服务,linux,学习,服务器
恢复openssh配置文件,重启服务

vi /etc/ssh/sshd_config

systemctl restart sshd.service
5.1 修改 SSH 默认端口

所需命令:

vi /etc/ssh/sshd_config

Port 2222

systemctl restart sshd.service

ssh [user]@[IP] -p 2222

OpenSSH常用配置文件有两个/etc/ssh/ssh_config/etc/ssh/sshd_config

ssh_config为客户端配置文件。

sshd_config为服务端配置文件。

vi /etc/ssh/sshd_config取消注释,并修改端口为2222(ssh默认端口为22)
重启openssh命令,Linux服务,linux,学习,服务器
设置好之后,保存退出,并重启SSH服务。systemctl restart sshd.service

我们通过客户机访问,会发现默认的22端口已经无法访问,需要使用 -p [端口号]的方式进行访问。 ssh 192.168.0.239 -p 2222
重启openssh命令,Linux服务,linux,学习,服务器

5.2 配置ssh日志

所需命令:

vi /etc/ssh/sshd_config

#SyslogFacility AUTH
SyslogFacility   AUTHPRIV
LogLevel DEBUG

systemctl restart sshd.service
tail -f /var/log/secure

vi /etc/ssh/sshd_config

SyslogFacility AUTHPRIV 表示当有人使用ssh登录系统时,ssh会记录信息,记录类型为AUTHPRIV。

#LogLevel INFO表示设置记录sshd日志信息的级别。
重启openssh命令,Linux服务,linux,学习,服务器
SyslogFacility一项,规定了服务日志的性质,也规定了服务日志存储的默认路径。ssh配置文件的这一字段一般是不需要修改的。

设置 描述 默认日志文件
local0 BIG-IP 特定消息 /var/log/ltm
local1 EM 特定消息 APM 特定消息 /var/log/em /var/log/apm
loacl2 GTM 和链路控制器特定消息 /var/log/gtm
local3 ASM 特定消息 /var/log/asm
loacl4 ITCM 门户和服务器 (iControl) 特定消息 /var/log/ltm
loacl5 包过滤特定消息 /var/log/pktfilter
loacl6 HTTPD 特定消息 /var/log/httpd/httpd_errors
loacl7 Linux 特定的引导消息 /var/log/boot.log
cron cron进程相关的消息 /var/log/cron
daemon 与系统守护进程相关的消息(包括namedntpd /var/log/daemon.log
kern 内核消息 /var/log/kern.log
mail 邮件系统消息 /var/log/maillog
auth 不包含敏感信息的用户身份验证消息 /var/log/secure
authpriv 包含敏感信息的用户身份验证消息 /var/log/secure
user 与用户进程相关的消息 /var/log/user.log

#LogLevel INFO表示设置记录sshd日志信息的级别。可以理解为设置了日志的详细程度。

等级 描述 冗长度
emerg 紧急系统紧急信息 最低限度
alert 需要管理员干预的严重错误 低的
crit 严重错误,包括硬件和文件系统故障 低的
err 非关键但可能非常重要的错误消息 低的
warning 至少应该记录以供审查的警告消息 中等的
notice 包含有用但可能会被忽略的消息 中等的
info 包含有用但可能会被忽略的消息 高的
debug 仅用于故障排除的消息 最大值

你可以将此条注释取消,将其修改为#LogLevel DEBUG,重启ssh服务(systemctl restart sshd.service),观察修改前后日志(tail -f /var/log/secure)详细度的变化。

5.3 禁止root登录

所需命令:

vi /etc/ssh/sshd_config

PermitRootLogin no

systemctl restart sshd.service

Authentication部分,取消注释PermitRootLogin yes并修改为 PermitRootLogin no,这一设置决定了是否允许root用户登录,将yes改为no,则root不能登录 。
重启openssh命令,Linux服务,linux,学习,服务器

PermitRootLogin 	yes					root可以登陆
					no					root不可以登陆
					prohibit-password	可以通过key登陆但禁止密码

重启openssh命令,Linux服务,linux,学习,服务器
但是重启服务后仍然使用密码登陆成功
重启openssh命令,Linux服务,linux,学习,服务器
这是因为需要修改的是另外的文件
重启openssh命令,Linux服务,linux,学习,服务器
重启openssh命令,Linux服务,linux,学习,服务器
重启openssh命令,Linux服务,linux,学习,服务器
之后不要马上重启,先生成key后,拷贝的服务器,防止后面无法连接

之后重启服务后,使用kali远程连接,可以通过密钥直接免密登陆,使用另一台机器再连接服务器,输入正确密码后还是无法连接

也可以修改禁止root登陆后,添加一个新账户并设置密码,再重启ssh服务,在客户机上使用root登录则会提示权限拒绝,而使用普通用户则成功登录

5.4 配置长时间无人操作自动断开ssh链接

所需命令:

vi /etc/ssh/sshd_config

LoginGraceTime 2m

systemctl restart sshd.service
vi /etc/profile

export TMOUT=10

source /etc/profile

#LoginGraceTime 2m,设置了指定时间内没有成功登录,将会断开连接,若无单位则默认时间为秒。图中默认为2分钟,如需调整可取消注释,调整为自己想要设定的值。
重启openssh命令,Linux服务,linux,学习,服务器
/etc/profile这个配置文件的末尾加上

export TMOUT=10      #单位是秒

执行source /etc/profile命令,使配置文件生效。
重启openssh命令,Linux服务,linux,学习,服务器
可以看到,当命令终端超过10秒无人操作,ssh连接自动断开了。

5.5 开启空口令登录

配置文件/etc/ssh/sshd_configPermitEmptyPasswords no,默认设置禁止空口令登录,将其取消掉#注释并将no改为yes,更改完后记得重启sshd服务使配置文件生效

systemctl restart sshd

注:使用空口令登录须开启密码认证
重启openssh命令,Linux服务,linux,学习,服务器
添加新用户测试

useradd 用户
passwd -d 用户	# 清除用户密码

重启openssh命令,Linux服务,linux,学习,服务器
测试空口令登录成功
重启openssh命令,Linux服务,linux,学习,服务器

5.6 访问速度调优

所需命令:

vi /etc/ssh/sshd_config

GSSAPIAuthentication no		# 关闭GSSAPI认证
UseDNS no					# 关闭DNS解析

systemctl restart sshd.service

将此两行改为no可解决ssh链接慢的问题
重启openssh命令,Linux服务,linux,学习,服务器
重启openssh命令,Linux服务,linux,学习,服务器

5.7 启用密码策略

启用密码策略有两个配置文件: 第一个是/etc/login.defs 修改文件里的策略:vi /etc/login.defs

PASS_MAX_DAYS 99      # 密码99天过期
PASS_MIN_DAYS  1      # 修改密码最小间隔为1天
PASS_MIN_LEN   8      # 密码最短长度为8
PASS_WARN_AGE  1      # 密码过期前1天内通知用户

第二个配置文件为:/etc/security/pwquality.conf修改文件里的策略:vi /etc/security/pwquality.conf

# "N" 处应填写数字
minlen=N              # 定义用户密码的最小长度; 
minclass=N            # 定义密码必须满足同时有几种字符;
maxrepeat=N           # 定义密码中允许几个连续相同的字符;    
maxclassrepeat=N      # 定义用户密码连续字符的最大数目;
lcredit=N             # 定义用户密码中必须包含多少个小写字母;
ucredit=N             # 定义用户密码中必须包含多少个大写字母;1
dcredit=N             # 定义用户密码中必须包含多少个数字;1
ocredit=N             # 定义用户密码中必须包含多少个特殊字符(除数字、字母之外);其中 = 1表示,至少有一个

配置文件长这样:
重启openssh命令,Linux服务,linux,学习,服务器
重启openssh命令,Linux服务,linux,学习,服务器
密码策略这里修改后,只对新建用户生效。

6. ssh 的日志

ssh服务的日志存储于/var/log/securetail -f /var/log/secure 大家可以自由定制所想查看的日志,例如模拟登录失败,登录成功等不同方式,以观察日志的不同变化。 状态:文章来源地址https://www.toymoban.com/news/detail-767604.html

  • Failed password 为密码错误
  • Accept password 为登录成功
  • disconnected by user 为断开链接

到了这里,关于Linux服务—openssh—学习笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Linux Centos7内网服务器离线升级openssh9.3

    内网服务器需要升级openssh,被折磨了一整天,觉得有必要记录一下,不然对不起这差点崩溃的一天,主要的几个难点就是不能yum一键安装,需要自己找到对应的依赖版本然后通过堡垒机上传到内网,还有就是服务器很干净,什么都没有,需要离线安装的包太多,又不知道依赖

    2024年02月16日
    浏览(45)
  • Linux高性能服务器编程——学习笔记①

    第一章有一些概念讲的很好,值得好好关注一下!!! 1.1 主要的协议 1.1.1 数据链路层 ​ 数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介(以太网、令牌环)上的传输。 ​ 常用的协议有两种: ARP协议(Address Resolve Protocol,地址解析协议) RARP(Reverse

    2024年01月20日
    浏览(63)
  • 解决重启Linux服务器后数据消失问题(重新挂载)

    目录 一、挂载 1.重新挂载 2.数据消失的原因 二、重启服务器 1.shutdown 2.其它关机重启指令 参考自 使用 reboot 命令重启服务器后,服务器内挂载的文件全部丢失。 那应该如何重新挂载呢? 我们想将10.6.6.28上的目录下的内容挂载到10.6.6.30的服务器下。 先使用 df -h查看 df -h df

    2024年02月08日
    浏览(76)
  • linux服务器断电重启后,发现时间误差八小时

    客户的服务器已部署好平台,放入了机房,运行正常。服务器系统时间设置东八区( CST ),时间日期也已修改正确 客户是我省的某小县城,某台晚上,他们大楼停电断电了,包括机房(就几台机器,没做应急电源) 等来电后,服务器重启,我们的平台也通过开机自启动运行

    2024年02月06日
    浏览(63)
  • [ubuntu]linux服务器每次重启anaconda环境变量失效

    云服务器每次重启后conda不能用了,应该是系统自动把设置环境变量清除了。如果想继续使用,则可以运行一下 你也修改bashrc文件去修改环境变量,方法为 vi ~/.bashrc 在最后一行加入: 上面是对miniconda3,下面是对anaconda3,注意上面用户名要替换自己真实系统用户名 修改完毕

    2024年02月11日
    浏览(77)
  • Python 与机器学习,在服务器使用过程中,常用的 Linux 命令包括哪些?

    🍉 CSDN 叶庭云 : https://yetingyun.blog.csdn.net/ 本博客旨在分享在实际开发过程中,开发者需要了解并熟练运用的 Linux 操作系统常用命令。Linux 作为一种操作系统,与 Windows 或 MacOS 并驾齐驱,尤其在服务器和开发环境中占据重要地位。Linux 命令,简而言之,就是指导计算机执行

    2024年04月12日
    浏览(60)
  • Linux高性能服务器编程 学习笔记 第五章 Linux网络编程基础API

    我们将从以下3方面讨论Linux网络API: 1.socket地址API。socket最开始的含义是一个IP地址和端口对(ip,port),它唯一表示了使用TCP通信的一端,本书称其为socket地址。 2.socket基础API。socket的主要API都定义在sys/socket.h头文件中,包括创建socket、命名socket、监听socket、接受连接、发

    2024年02月07日
    浏览(56)
  • Linux高性能服务器编程 学习笔记 第二章 IP协议详解

    本章从两方面探讨IP协议: 1.IP头部信息。IP头部出现在每个IP数据报中,用于指定IP通信的源端IP地址、目的端IP地址,指导IP分片和重组,指定部分通信行为。 2.IP数据报的路由和转发。IP数据报的路由和转发发生在除目标机器外的所有主机和路由器上,它们决定数据报是否应

    2024年02月09日
    浏览(41)
  • Linux高性能服务器编程 学习笔记 第一章 TCP/IP协议族

    现在Internet使用的主流协议族是TCP/IP协议族,它是一个分层、多协议的通信体系。 TCP/IP协议族包含众多协议,我们只详细讨论IP协议和TCP协议,因为它们对编写网络应用程序有最直接的影响。如果想系统学习网络协议,RFC(Request For Comments,评论请求)是首选资料。 TCP/IP协议

    2024年02月09日
    浏览(65)
  • 重启Linux服务器 Oracle 数据库步骤 重启数据库startup 报ORA-01031 insufficient privileges错误解决

    在一次重启数据库的时候,没有正确按照步骤重启数据库,导致服务器重启。 正确步骤及详解: (1) su - oracle 打开Xshell,连接到数据库所在的linux机器。若用户为root,请输入命令“su - oracle”并回车,若要密码,输入密码后并回车,就切换到了oracle用户下。 检测方法:“#”变

    2024年02月15日
    浏览(69)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包