热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux配置SSH远程登录管理

目录一、SSH协议1.SSH简介2.SSH的优点3.SSH远程控制软件及服务二、SSH远程

目录

一、SSH协议

1.SSH简介

2.SSH的优点

3.SSH远程控制软件及服务

二、SSH远程管理配置

1.配置OpenSSH服务端

2.使用SSH客户端软件

(1)SSH远程登录

(2)scp远程传输文件

3.SSH登录验证的两种验证方式

(1)密码验证

(2)密钥对验证


一、SSH协议

1.SSH简介

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

2.SSH的优点

  • 数据加密
  • 数据压缩(提高传输速率)

        传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的, 就是很容易受到“中间人”这种方式的攻击。

        通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。

        使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、PoP、甚至为PPP提供一个安全的"通道"

3.SSH远程控制软件及服务

SSH客户端:Putty、Xshell、CRT、MobaXterm

用于远程连接主机的软件,企业一般使用Putty这类开源软件。

SSH服务端: OpenSSH

OpenSSH是实现 SSH协议的开源软件项目,适用于各种UNIX、Linux操作系统。Centos 7系统默认已安装openssh相关软件包,并已将sshd 服务添加为开机自启动。

sshd服务

sshd服务默认使用的是TCP的22端口。

sshd服务的默认配置文件在/etc/ssh下,ssh_config是针对客户端的配置,sshd_config是针对服务端的配置。

二、SSH远程管理配置

1.配置OpenSSH服务端

服务端配置文件sshd_config常用字段及解释

字段解释
Port 22

监听端口(默认22)

ListenAddress 0.0.0.0监听ipv4地址网段(默认全网段)
LoginGraceTime 2m登录验证超时时间 2分钟
PermitRootLogin no禁止root用户登录
MaxAuthTries 6最大重试次数 6次
MaxSessions 10最大支持会话数量 10个
PermitEmptyPasswords no禁止空密码用户登录
UseDNS no禁用DNS反向解析(提高服务器响应速度)

AllowUsers 用户1 用户2...

DenyUsers 用户1 用户2...

允许或禁止某用户登录(多个用户用空格隔开)

注:这两条字段选其一,不能同时使用

上一条用户名后加上@12.0.0.1与上一条实现允许或禁止用户只能在指定ip的主机上登录

2.使用SSH客户端软件

(1)SSH远程登录

[root@localhost1 ~]# ssh [-p 端口号] [用户名@]服务端ip         // 远程登录指定服务端

-p 指定远程登录的端口,不写默认使用22端口

ip前加上"用户名@"指定登录的用户,不写默认使用当前用户

[root@localhost2 ~]# exit            //使用exit命令退出登录

//使用root用户登录192.168.116.20主机
[root@localhost1 ~]#ssh -p 22 root@192.168.116.20
The authenticity of host '192.168.116.20 (192.168.116.20)' can't be established.
ECDSA key fingerprint is SHA256:BhhxtVT0Hy+tIQ4bMqAvyKJUBldEolUbURl/42FYg4o.
ECDSA key fingerprint is MD5:a0:5b:4f:33:31:ef:38:01:31:3b:b4:14:ad:a1:23:29.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.116.20' (ECDSA) to the list of known hosts.
root@192.168.116.20's password:
Last login: Tue Aug 16 09:09:20 2022
'abrt-cli status' timed out
//登录成功
[root@localhost2 ~]#
//退出登录
[root@localhost2 ~]#exit
登出
Connection to 192.168.116.20 closed.
//回到本机
[root@localhost1 ~]#

注:当用户第一次登录ssh服务器时,必须接受服务器发来的ECDSA密钥(根据提示输入"yes")后才能继续验证。接收的密钥信息将保存到~/. ssh/know_hosts文件中。密码验证成功以后,即可登录目标服务器的命令行环境中。

//刚刚登录时收到的密钥
[root@localhost1 ~]#cat .ssh/known_hosts
192.168.116.20 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCBhY9r8mXXzHMu2IMqVnvgW99vU8Xnio3MpUrkYwbrzfzXG37IiWriziEwIMm5c8XlS+q/iIj8Cdm+drMB6REk=

(2)scp远程传输文件

上传文件(客户端传到服务端)

[root@localhost1 test]# scp [-P 端口号] 文件名 [用户名@]服务端ip:上传到的目录

-P 指定远程登录的端口,不写默认使用22端口

-r 目录 递归传输目录

ip前加上"用户名@"指定登录的用户,不写默认使用当前用户

//首先创建文件夹用于scp上传
[root@localhost1 /]#mkdir -p /data/test
[root@localhost1 /]#cd /data/test/
[root@localhost1 test]#touch 1.txt
//使用root用户scp递归将/data目录上传到服务端的/root目录下
[root@localhost1 test]#scp -P 22 -r /data root@192.168.116.20:/root
root@192.168.116.20's password:
1.txt 100% 0 0.0KB/s 00:00
//进入服务机,发现家目录多了data目录
[root@localhost2 ~]#ls
anaconda-ks.cfg initial-setup-ks.cfg 模板 图片 下载 桌面
data 公共 视频 文档 音乐
//查看这个data目录,确认是scp上传过来的
[root@localhost2 ~]#cd data
[root@localhost2 data]#tree
.
└── test
└── 1.txt
1 directory, 1 file

下载文件(从服务端下载到客户端) 

[root@localhost1 test]# scp [-P 端口号] [用户名@]服务端ip:文件路径 保存到本地的路径

-P 指定远程登录的端口,不写默认使用22端口

-r 目录 递归传输目录

ip前加上"用户名@"指定登录的用户,不写默认使用当前用户

//在服务端新建测试文件
[root@localhost2 ~]#touch test.txt
[root@localhost2 ~]#ls
anaconda-ks.cfg test.txt 模板 图片 下载 桌面
initial-setup-ks.cfg 公共 视频 文档 音乐
//以root用户scp远程下载服务端的test.txt到/data目录下
[root@localhost1 ~]#scp -P 22 root@192.168.116.20:/root/test.txt /data
root@192.168.116.20's password:
test.txt 100% 0 0.0KB/s 00:00
//查看发现获取成功
[root@localhost1 ~]#ls /data
test.txt

3.SSH登录验证的两种验证方式

(1)密码验证

对服务器中本地系统用户的登录名称、密码进行验证。简便,但可能会被暴力破解

        默认情况下,远程连接都是使用的密码验证,即需要输入登录用户的密码。

(2)密钥对验证

要求提供相匹配的密钥信息才能通过验证。通常先在客户端中创建一对密钥文件(公钥、私钥),然后将公钥文件放到服务器中的指定位置。远程登录时,系统将使用公钥、私钥进行加密/解密关联验证。能增强安全性,且可以免交互登录。

公钥和私钥的关系:

  • 公钥和私钥是成对生成的,这两个密钥互不相同,可以互相加密和解密。
  • 不能根据一个密钥来推算出另一个密钥(非对称密钥)。
  • 公钥对外公开,私钥只有私钥的持有人才知道。

SSH密钥对验证过程:

配置使用密钥对验证登录

1.生成密钥对

[root@localhost1 ~]#ssh-keygen  [-t 加密算法]   //生成密钥对

-t  指定加密算法(rsa、dsa、ecdsa等)

//生成密钥对(使用dsa加密算法)
[root@localhost1 ~]#ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): --指定密钥对文件位置(默认当前用户家目录的.ssh/下)
Enter passphrase (empty for no passphrase): --是否给密钥对设置密码(为空则不指定)
Enter same passphrase again: --指定后需要重输密码校验
Your identification has been saved in /root/.ssh/id_dsa. --私钥位置
Your public key has been saved in /root/.ssh/id_dsa.pub. --公钥位置
The key fingerprint is:
SHA256:vjGR6YAff/Nah7t+m1Ou6C0YWcrvUZaZ0tRQ5tpGVdg root@localhost1
The key's randomart image is:
+---[DSA 1024]----+
| .+*|
| .=E|
| . +|
| . o .o B |
| . o S. +. O o|
| . * .= = ..|
| . * o++ .o |
| =.+o*o..|
| . .=O+=+ |
+----[SHA256]-----+
[root@localhost1 ~]#ls .ssh/
id_dsa id_dsa.pub known_hosts

2.1将公钥发送给服务器(手动)

//查看公钥文件
[root@localhost1 ~]#cat .ssh/id_dsa.pub
ssh-dss AAAAB3NzaC1kc3MAAACBAI9yxdO7V/W/ATYiSoKz4MbWZDRpE902lBpH0i5dmghNwWAxqV0DRMjetyvUc+R466NdXmp7N32ARuj+wEMNZ73g3FdurzkhwRmGi8RhR9obYkL3cqS34dmQvAWAlYmNYfqIg8Z2nv9KLwCrsnKfJDevlgmjpyj+Bxzx0smpIq/TAAAAFQDUYT4psdnG+JAUJfUhTCBz5AivsQAAAIAVLo/baTi/Z/xDod4N+bLwDYylsGKyWUuB8pTsMz/IPBH6KWPMWB62H9cO4rXhX2VQsKQXFBv77gqhpqzCB0iqQvc1DOHNXIp33tRlOvLntTYR02jduFnMtw9XyKjpIRaQmON3JY97liYL9zqP4Dd2RwSbPvSAhCPgWWL6lEX7awAAAIB8ad42MTdKzRVhZ3wu6KBmvn0LmeiX0NO5WQcPoOfwSqH7hCbhV2Dy+BfM3OklL6I3HesTajtuyLy6UBL83ayrvl8AXO0y7NCPOuZCm59YYXF8SE7pQz7JZBFyA9jTm9Ba4W0rrwHo3x1OkYXFd5LQowO71k/KKuWGQMGssR8Uiw== root@localhost1
//在服务端当前用户家目录下的.ssh下创建authorized_keys(用于存放公钥)
[root@localhost2 ~]cd .ssh
[root@localhost2 .ssh]#vim authorized_keys
将之前生成的公钥复制进这个文件

2.2将公钥发送给服务器(自动)

[root@localhost2 ~]# ssh-copy-id -i 公钥文件  用户@服务端ip  

//使用命令自动传送公钥文件,会自动生成authorized_keys文件
[root@localhost1 ~]#cd .ssh
[root@localhost1 .ssh]#ssh-copy-id -i id_dsa.pub root@192.168.116.20
//查看一下
[root@localhost2 ~]#cd .ssh
[root@localhost2 .ssh]#ls
authorized_keys known_hosts
[root@localhost2 .ssh]#cat authorized_keys
ssh-dss AAAAB3NzaC1kc3MAAACBAI9yxdO7V/W/ATYiSoKz4MbWZDRpE902lBpH0i5dmghNwWAxqV0DRMjetyvUc+R466NdXmp7N32ARuj+wEMNZ73g3FdurzkhwRmGi8RhR9obYkL3cqS34dmQvAWAlYmNYfqIg8Z2nv9KLwCrsnKfJDevlgmjpyj+Bxzx0smpIq/TAAAAFQDUYT4psdnG+JAUJfUhTCBz5AivsQAAAIAVLo/baTi/Z/xDod4N+bLwDYylsGKyWUuB8pTsMz/IPBH6KWPMWB62H9cO4rXhX2VQsKQXFBv77gqhpqzCB0iqQvc1DOHNXIp33tRlOvLntTYR02jduFnMtw9XyKjpIRaQmON3JY97liYL9zqP4Dd2RwSbPvSAhCPgWWL6lEX7awAAAIB8ad42MTdKzRVhZ3wu6KBmvn0LmeiX0NO5WQcPoOfwSqH7hCbhV2Dy+BfM3OklL6I3HesTajtuyLy6UBL83ayrvl8AXO0y7NCPOuZCm59YYXF8SE7pQz7JZBFyA9jTm9Ba4W0rrwHo3x1OkYXFd5LQowO71k/KKuWGQMGssR8Uiw== root@localhost1

3.重新使用ssh远程登录服务端,会提示使用密钥验证登录(如果为密钥设置了密码,还需要输入密钥的密码)

 

补充:免交互登录

  • 公钥文件设置了密码

        服务端导入公钥文件后,建立ssh代理(此方式只在当前连接有效)

[root@localhost1 ~]#ssh-agent bash
[root@localhost1 ~]#ssh-add
Enter passphrase for /root/.ssh/id_dsa:
Identity added: /root/.ssh/id_dsa (/root/.ssh/id_dsa)

  • 公钥文件未设置密码(密码为空)

        这种情况可以在密钥验证后直接登录


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文详细介绍了华为4GLTE路由器B310的外置天线安装和设置方法。通过连接电源和网线,输入路由器的IP并登陆设置页面,选择手动设置和手动因特网设置,输入ISP提供商的用户名和密码,并设置MTU值。同时,还介绍了无线加密的设置方法。最后,将外网线连在路由器的WAN口即可使用。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 单点登录原理及实现方案详解
    本文详细介绍了单点登录的原理及实现方案,其中包括共享Session的方式,以及基于Redis的Session共享方案。同时,还分享了作者在应用环境中所遇到的问题和经验,希望对读者有所帮助。 ... [详细]
  • 大学生自学复制假饭卡:2个月卖出3千张,获利10万元!背后的神器长啥样?
    山东淄博的一名在校大学生通过自学复制饭卡的技术,2个月内成功卖出3千张假饭卡,获利10万元。他使用了一种特殊的设备来复制饭卡,并通过网店销售给其他学生。该学生已被刑拘。此事被发现是因为学校食堂管理员发现了大量负数的情况,经警方调查后发现是这名学生所为。他制作的假饭卡与真卡几乎一模一样,售价仅为面值的40%。该学生一共复制了三千多张饭卡,并已全部卖完,获利十万余元。 ... [详细]
  • Google在I/O开发者大会详细介绍Android N系统的更新和安全性提升
    Google在2016年的I/O开发者大会上详细介绍了Android N系统的更新和安全性提升。Android N系统在安全方面支持无缝升级更新和修补漏洞,引入了基于文件的数据加密系统和移动版本的Chrome浏览器可以识别恶意网站等新的安全机制。在性能方面,Android N内置了先进的图形处理系统Vulkan,加入了JIT编译器以提高安装效率和减少应用程序的占用空间。此外,Android N还具有自动关闭长时间未使用的后台应用程序来释放系统资源的机制。 ... [详细]
  • Win10 64位旗舰版的优势及特点详解
    本文详细介绍了Win10 64位旗舰版的优势及特点,包括更安全的源安装盘、永久激活方式、稳定性和硬件驱动的集成,以及人性化的维护工具和分区功能。通过阅读本文,您将了解到Win10 64位旗舰版相比其他版本的优势和特点。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
author-avatar
carefulff
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有